使用NPOI方法导出到excel可以大量提高导出速度!步骤如下:
(1)使用NPOI首先要有NPOI开发包(网上直接搜资源有的)
(2)解压后把下边两个文件拷贝到自己的项目下(在bin目录下 .net4.0 下的 NPOI.dll和NPOI.xml)
我的项目结构大致如下 使用的是DAL结构 我把NPOI工具集放到了UI层
(3)添加引用(以我的项目为例:在我项目的UI点击引用--游览--然后找到刚才拷贝的两个文件 即可)
(4)编写代码:
我的是一个点击事件 “导出”
前提条件就不说了 关键技术在下边代码展示出来了,别忘了 解析!
private void btnExportToExcel_Click(object sender, RoutedEventArgs e) { SaveFileDialog sdfExport = new SaveFileDialog(); sdfExport.Filter = "Excel文件|*.xls"; if (sdfExport.ShowDialog() != true) { return; } string filename = sdfExport.FileName; HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("员工数据"); IRow rowHeader = sheet.CreateRow(0);//表头行 rowHeader.CreateCell(0, CellType.STRING).SetCellValue("姓名"); rowHeader.CreateCell(1, CellType.STRING).SetCellValue("工号"); rowHeader.CreateCell(2, CellType.STRING).SetCellValue("日期"); //把查询结果导出到Excel Employee[] employees = (Employee[])datagrid.ItemsSource; //数据源 这里是DataGrid里边的 使用绑定技术实现的 for (int i = 0; i < employees.Length; i++) { Employee employee = employees[i]; IRow row = sheet.CreateRow(i + 1); row.CreateCell(0, CellType.STRING).SetCellValue(employee.Name); row.CreateCell(1, CellType.STRING).SetCellValue(employee.Number); <span style="white-space:pre"> </span>//单独处理日期格式 ICellStyle styledate = workbook.CreateCellStyle(); IDataFormat format = workbook.CreateDataFormat(); //格式具体有哪些请看单元格右键中的格式,有说明 styledate.DataFormat = format.GetFormat("yyyy\"年\"m\"月\"d\"日\""); ICell cellInDate = row.CreateCell(2, CellType.NUMERIC); cellInDate.CellStyle = styledate; cellInDate.SetCellValue(employee.InDate); } <span style="white-space:pre"> </span> //写入到流中 using (Stream stream = File.OpenWrite(filename)) { workbook.Write(stream); } }
ok!我这里试一下 可以完美运行! 祝你好运1
时间: 2024-10-01 12:02:39