C#讀寫Excel表格文件NPOI方式無需安裝office .xls後綴沒問題
阿新 • • 發佈:2018-09-22
key 表頭 調試 成功 c++ exc reat 搜索 neu
/// <summary> /// 讀Excel /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static DataTable getexcel(String fileName) { DataTable dt = new DataTable(); IWorkbook workbook = null; //新建IWorkbook對象 FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); if (fileName.IndexOf(".xlsx") > 0) // 2007版本 { workbook = new XSSFWorkbook(fileStream); //xlsx數據讀入workbook } else if (fileName.IndexOf(".xls") > 0) // 2003版本 { workbook = new HSSFWorkbook(fileStream); //xls數據讀入workbook } ISheet sheet = workbook.GetSheetAt(0); //獲取第一個工作表 IRow row;// = sheet.GetRow(0); //新建當前工作表行數據 // MessageBox.Show(sheet.LastRowNum.ToString()); row = sheet.GetRow(0); //row讀入頭部 if (row != null) { for (int m = 0; m < row.LastCellNum; m++) //表頭 { string cellValue = row.GetCell(m).ToString(); //獲取i行j列數據 Console.WriteLine(cellValue); dt.Columns.Add(cellValue); } } for (int i = 1; i <= sheet.LastRowNum; i++) //對工作表每一行 { System.Data.DataRow dr = dt.NewRow(); row = sheet.GetRow(i); //row讀入第i行數據 if (row != null) { for (int j = 0; j < row.LastCellNum; j++) //對工作表每一列 { string cellValue = row.GetCell(j).ToString(); //獲取i行j列數據 Console.WriteLine(cellValue); dr[j] = cellValue; } } dt.Rows.Add(dr); } Console.ReadLine(); fileStream.Close(); return dt; }
/// <summary> /// 將datatable對象保存為Excel文件 /// 提供Excel保存路徑及datatable數據對象,成功返回真,失敗返回假。 /// </summary> /// <param name="path"></param> /// <param name="dt"></param> /// <returns></returns> public static bool DataTableToExcel(String path, DataTable dt) { bool result = false; IWorkbook workbook = null; FileStream fs = null; IRow row = null; ISheet sheet = null; ICell cell = null; try { if (dt != null && dt.Rows.Count > 0) { workbook = new HSSFWorkbook(); sheet = workbook.CreateSheet("Sheet0");//創建一個名稱為Sheet0的表 int rowCount = dt.Rows.Count;//行數 int columnCount = dt.Columns.Count;//列數 //設置列頭 row = sheet.CreateRow(0);//excel第一行設為列頭 for (int c = 0; c < columnCount; c++) { cell = row.CreateCell(c); cell.SetCellValue(dt.Columns[c].ColumnName); } //設置每行每列的單元格, for (int i = 0; i < rowCount; i++) { row = sheet.CreateRow(i + 1); for (int j = 0; j < columnCount; j++) { cell = row.CreateCell(j);//excel第二行開始寫入數據 cell.SetCellValue(dt.Rows[i][j].ToString()); } } using (fs = File.OpenWrite(path)) { workbook.Write(fs);//向打開的這個xls文件中寫入數據 result = true; } } return result; } catch (Exception ex) { MessageBox.Show(ex.ToString()); if (fs != null) { fs.Close(); } return false; } }
添加引用到你的工程中,並使用using字段進行引用。
報錯:未能加載文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf116
解決方案:刪除所有引用的NPOI相關的dll,直接右鍵工程名稱,點擊“管理NuGet程序包”,搜索NPOI,然後安裝,重新編譯,調試
C#讀寫Excel表格文件NPOI方式無需安裝office .xls後綴沒問題