使用NPOI方法导出数据到excel表中

使用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



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
是的,NPOI库可以在导出数据Excel的时候自动新建行,并追加数据。具体来说,您可以使用NPOI的HSSFWorkbook和HSSFSheet类来Excel工作簿和工作,然后使用HSSFSheet的CreateRow和CreateCell方法来创建新的行和单元格,最后使用HSSFCell的SetCellValue方法来设置单元格的值。下面是一个示例代码: ```csharp using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.Collections.Generic; using System.IO; // 导出数据Excel public void ExportDataToExcel(IEnumerable<MyDataClass> data, string filePath) { var workbook = new HSSFWorkbook(); var sheet = workbook.CreateSheet("Sheet1"); int rowIndex = 0; // 创建头 var headerRow = sheet.CreateRow(rowIndex++); headerRow.CreateCell(0).SetCellValue("列1"); headerRow.CreateCell(1).SetCellValue("列2"); // 创建数据行 foreach (var item in data) { var dataRow = sheet.CreateRow(rowIndex++); dataRow.CreateCell(0).SetCellValue(item.Column1); dataRow.CreateCell(1).SetCellValue(item.Column2); } // 自动调整列宽 sheet.AutoSizeColumn(0); sheet.AutoSizeColumn(1); // 保存文件 using (var fileStream = new FileStream(filePath, FileMode.Create)) { workbook.Write(fileStream); } } ``` 上面的代码会创建一个名为“Sheet1”的工作,并在第一行创建头,然后遍历数据集合,为每一行创建一个新的数据行,并将数据填充到单元格中。最后会自动调整列宽,并将数据保存指定的文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐刘根

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值