WinForm 使用 NPOI 2.2.1从datatable导出Excel

最新的NOPI应该是2.3了,但在官网上还是2.2.1。

也是第一次使用NPOI来导出Excel文件。

在写的时候搜不到2.2.1的教程,搜了一个2.2.0的教程。

不过也没什么问题,NPOI是真的方便简单。

 

不多说,放代码

            IWorkbook excel = new HSSFWorkbook();//创建.xls文件
            ISheet sheet = excel.CreateSheet("sheet1"); //创建sheet

            DataTable datatable = (DataTable)dataGridView.DataSource;//获取数据源datatable

            IRow row = sheet.CreateRow(0);//创建行对象,填充表头
            foreach (DataColumn column in datatable.Columns)
            {
                row.CreateCell(0).SetCellValue("供应商编号");
                row.CreateCell(1).SetCellValue("供应商名称");
                row.CreateCell(2).SetCellValue("供应商联系方式");
                row.CreateCell(3).SetCellValue("供应商地址");
                row.CreateCell(4).SetCellValue("供应商税号");
                row.CreateCell(5).SetCellValue("供应商初期应付款");
                row.CreateCell(6).SetCellValue("供应商分类");
                row.CreateCell(7).SetCellValue("供应商分类编号");
            }

            //填充内容,j从1开始,屏蔽掉第一列,循环读取
            for (int i = 0; i < datatable.Rows.Count; i++)
            {
                row = sheet.CreateRow(i + 1);
                for (int j = 1; j < datatable.Columns.Count; j++)
                {
                    row.CreateCell(j-1).SetCellValue(datatable.Rows[i][j].ToString());
                    sheet.AutoSizeColumn(j);
                }
            }

            //写入文件
            string DesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
            FileStream xlsfile = new FileStream(DesktopPath + @"\供应商信息Excel" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls", FileMode.Create);
            excel.Write(xlsfile);
            xlsfile.Close();

            MessageBox.Show("Excel文件已导出到桌面","提示");

因为我的第一列是一个内码值,要将他屏蔽掉,

所以在循环填充数据的时候,初始化 j=1,但在之后的列数中,这样会导致空出一列,所以再使用j-1。

其实也可以通过操作 datatable 来屏蔽掉这一列。

转载于:https://www.cnblogs.com/Aaxuan/p/6899961.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值