首页 > 代码库 > NPOI操作之Excel文件的导入和导出
NPOI操作之Excel文件的导入和导出
1 public static DataTable ExcelToDataTable(string filePath) 2 { 3 DataTable dt = new DataTable(); 4 5 HSSFWorkbook hssfworkbook; 6 using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) 7 { 8 hssfworkbook = new HSSFWorkbook(file); 9 } 10 ISheet sheet = hssfworkbook.GetSheetAt(0); 11 System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); 12 13 IRow headerRow = sheet.GetRow(0); 14 int cellCount = headerRow.LastCellNum; 15 16 for (int j = 0; j < cellCount; j++) 17 { 18 ICell cell = headerRow.GetCell(j); 19 dt.Columns.Add(cell.ToString()); 20 } 21 22 for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++) 23 { 24 IRow row = sheet.GetRow(i); 25 DataRow dataRow = dt.NewRow(); 26 if (row == null) 27 { 28 break; 29 } 30 for (int j = row.FirstCellNum; j < cellCount; j++) 31 { 32 if (row.GetCell(j) != null) 33 dataRow[j] = row.GetCell(j).ToString(); 34 } 35 36 dt.Rows.Add(dataRow); 37 } 38 return dt; 39 }
导出到excel
1 public static MemoryStream DataToExcel(DataTable dt) 2 { 3 MemoryStream ms = new MemoryStream(); 4 using (dt) 5 { 6 IWorkbook workbook = new HSSFWorkbook();//创建excel工作簿 7 ISheet sheet = workbook.CreateSheet();//在该表中创建工作表 8 IRow headerRow = sheet.CreateRow(0); //在表中添加一行 9 foreach (DataColumn column in dt.Columns) 10 headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption); 11 int rowIndex = 1; 12 foreach (DataRow row in dt.Rows) 13 { 14 IRow dataRow = sheet.CreateRow(rowIndex); 15 foreach (DataColumn column in dt.Columns) 16 { 17 dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); 18 } 19 rowIndex++; 20 } 21 workbook.Write(ms); 22 ms.Flush(); 23 ms.Position = 0; 24 } 25 return ms; 26 }
接着
1 MemoryStream ms = ExcelHelper.DataToExcel(dt); 2 FileStream fs = new FileStream("e:\\2.xls", FileMode.Create); 3 ms.WriteTo(fs); 4 fs.Close(); 5 ms.Close();
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。