最新的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 来屏蔽掉这一列。