从 DataGridView 导出到 Excel
一种将数据从 DataGridView 导出到原生 Excel (xls) 的方法,支持任何数据源
引言
在WinForm应用程序中,经常会遇到将DataGridView中的数据导出到Excel的问题,有一些商业解决方案可以解决这个问题。本文描述了一种简单、通用且免费的方法来实现。
背景
导出到Excel的工作是通过“Office XP Primary Interop Assemblies (PIAs)”完成的。
首先,从datagridview的datasource中获取数据,进行格式化,然后通过Excel COM Interiop导出到excel文件。
DataGridView的数据源可以是:
- 实体ArrayList
- 至少包含1个datatable的Dataset
- Datatable
在导出到excel之前,数据应该存储在DataTable中。如果DataGridView的DataSource是ArrayList,则使用ArrayListToDataTable方法将ArrayList转换为DataTable。
ArrayList arr = (ArrayList)dataGridView.DataSource; dt = ArrayListToDataTable(arr);
一旦数据存储在datatable中,就使用dataTable2Excel方法导出到excel。
dataTable2Excel(dt, dataGridView, pFullPath_toExport, nameSheet);
使用代码
您只需要将以下2个文件复制到您的项目中:
- ExportToExcel.cs
- UC_DataGridView.cs
- UC_DataGridView.Designer.cs
在您的项目中使用的DataGridView,并使用以下代码导出到excel:
Tools.ExportToExcel.ExportToExcel exp = new Tools.ExportToExcel.ExportToExcel(); exp.dataGridView2Excel(this.dgvDataToExport, path, "NameSheet");
兴趣点
请注意,Excel文件中的标题是从DataGridView标题获取的,而不是从DataTable名称列获取的。
存在一个错误,列标题导出不正确,我正在修复它。
历史
2008/10/15 首次发布