zoukankan      html  css  js  c++  java
  • 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 来屏蔽掉这一列。



    转载请标明出处

    作者:AaXuan

    地址:http://www.cnblogs.com/Aaxuan

    知识共享许可协议

    本作品采用  知识共享署名 3.0 未本地化版本许可协议  进行许可。

  • 相关阅读:
    VMWare上的ubuntu系统安装VMWare Tools(图文)
    Ubuntu添加新分区
    emacs入门
    SQL UNION 操作符
    eclipse安装其他颜色主题包
    mysql左连接
    不能用notepad++编辑器编写python
    ImportError: No module named simplejson.scanner
    运行 python *.py 文件出错,如:python a.py
    doc命令大全(详细版)
  • 原文地址:https://www.cnblogs.com/Aaxuan/p/6899961.html
Copyright © 2011-2022 走看看