C# DataGridView 导出 Excel(根据Excel版本显示选择不同后缀格式xls或xlsx)

简介: /// /// DataGridView导出至Excel,解决问题:打开Excel文件格式与扩展名指定格式不一致 /// /// 数据源表格 /// 导出时是否显示excel界面 /// ...
  
/// <summary> /// DataGridView导出至Excel,解决问题:打开Excel文件格式与扩展名指定格式不一致 /// </summary> /// <param name="dataGridView">数据源表格</param> /// <param name="isShowExcle">导出时是否显示excel界面</param> /// <returns></returns> public static bool DcExcel(DataGridView dataGridView, bool isShowExcle = true) { int FormatNum;//保存excel文件的格式 Excel.Application excel = new Excel.Application(); string excelVersion = excel.Version;//获取你使用的excel 的版本号 //声明保存对话框 SaveFileDialog saveFileDialog = new SaveFileDialog(); //默然文件后缀 saveFileDialog.DefaultExt = "xls"; if (Convert.ToDouble(excelVersion) < 12)//You use Excel 97-2003 { FormatNum = -4143; //文件后缀列表 saveFileDialog.Filter = "Excel(*.xls)|*.xls"; } else//you use excel 2007 or later { FormatNum = 56; //文件后缀列表 saveFileDialog.Filter = "Excel(*.xls)|*.xls|Excel(2007-2016)(*.xlsx)|*.xlsx"; } Form fr = dataGridView.Parent as Form; if (fr != null)//默认文件名 { saveFileDialog.FileName = fr.Text; } //默然路径是系统当前路径 saveFileDialog.InitialDirectory = Directory.GetCurrentDirectory(); //打开保存对话框 if (saveFileDialog.ShowDialog() == DialogResult.Cancel) return false; //返回文件路径 string fileName = saveFileDialog.FileName; if (string.IsNullOrEmpty(fileName.Trim())) { return false; } if (dataGridView.Rows.Count == 0) return false; //建立Excel对象 var objWorkbook = excel.Application.Workbooks.Add(true); excel.Visible = isShowExcle; //生成字段名称 for (int i = 0; i < dataGridView.ColumnCount; i++) { excel.Cells[1, i + 1] = dataGridView.Columns[i].HeaderText; excel.Cells[1, i + 1].Font.Bold = true; } //填充数据 for (int i = 0; i < dataGridView.RowCount - 1; i++) { for (int j = 0; j < dataGridView.ColumnCount; j++) { if (dataGridView[j, i].ValueType == typeof(string)) { excel.Cells[i + 2, j + 1] = "'" + dataGridView[j, i].Value.ToString(); } else { excel.Cells[i + 2, j + 1] = dataGridView[j, i].Value.ToString(); } } } //Excel.XlFileFormat.xlOpenXMLWorkbook(.xlsx) //Excel.XlFileFormat.xlExcel8(Excel97 - 2003, .xls)
       //判断excel文件的保存格式是xls还是xlsx
var format = fileName.EndsWith(".xls") ? Excel.XlFileFormat.xlExcel8 : Excel.XlFileFormat.xlOpenXMLWorkbook; objWorkbook.SaveAs(fileName, format, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); return true; }

 

目录
相关文章
|
2月前
|
数据格式 Python
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
132 0
|
1月前
|
前端开发 JavaScript
使用Vue+xlsx+xlsx-style实现导出自定义样式的Excel文件
本文介绍了在Vue项目中使用`xlsx`和`xlsx-style`(或`xlsx-style-vite`)库实现导出具有自定义样式的Excel文件的方法,并提供了详细的示例代码和操作效果截图。
256 1
使用Vue+xlsx+xlsx-style实现导出自定义样式的Excel文件
|
1月前
Excel 条件格式
Excel 条件格式
24 0
|
2月前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
2月前
|
存储 开发工具 git
好的git管理方法,标明项目_编号_(功能,不过还是在没有bug出现时就提交为好)+Excel表管理的格式
好的git管理方法,标明项目_编号_(功能,不过还是在没有bug出现时就提交为好)+Excel表管理的格式
|
3月前
|
API Python
Python库`openpyxl`是一个用于读取和写入Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
【6月更文挑战第19天】`openpyxl`是Python处理xlsx文件的库,支持读写Excel 2010格式。使用`pip install openpyxl`安装。基本操作包括加载文件、读写单元格、操作行和列。例如,加载Excel后,可以读取单元格`A1`的值,或将“Hello, World!”写入`A1`。还可修改单元格内容,如加1后保存到新文件。更多功能,如样式和公式,见官方文档[1]。 [1]: &lt;https://openpyxl.readthedocs.io/en/stable/&gt;
58 1
|
3月前
|
Go
golang解析excel、csv编码格式
golang解析excel、csv编码格式
34 4
|
4月前
|
Java Apache 索引
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
659 0
|
4月前
|
存储 缓存 C#
46.c#:datagridview控件
46.c#:datagridview控件
70 1
|
4月前
|
C#
C# gridControl 导出Excel
C# gridControl 导出Excel