以一個(gè)把DataTable的數(shù)據(jù)添加到xlsx表格為例:
步驟如下:
第一步:在管理解決方案NuGet庫(kù)中添加NPOI的引用,如圖(1)所示洋丐,只需安裝DotNetCore.NPOI庫(kù)即可。
第二步:上代碼挥等,導(dǎo)出方法友绝。
private void AddExcelData(DataTable dataTable)
? ? ? ? {
? ? ? ? ? ? //文件路徑
? ? ? ? ? ? string excelPath = @"E:/xxx.xlsx";
? ? ? ? ? ? //讀取流
? ? ? ? ? ? FileStream fileStream1 = new FileStream(excelPath, FileMode.Open, FileAccess.Read, FileShare.Read);
? ? ? ? ? ? //注意:xlsx文件才可以使用XSSFWorkbook類(lèi)
? ? ? ? ? ? XSSFWorkbook xSSFWorkbook = new XSSFWorkbook(fileStream1);
? ? ? ? ? ? //獲取工作表,參數(shù)為第幾個(gè)表
? ? ? ? ? ? ISheet sheet = xSSFWorkbook.GetSheetAt(0);
? ? ? ? ? ? //寫(xiě)入流
? ? ? ? ? ? FileStream fileStream2 = new FileStream(excelPath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
? ? ? ? ? ? //在工作表中末尾添加一行
? ? ? ? ? ? IRow row = sheet.CreateRow((short)(sheet.LastRowNum + 1));
? ? ? ? ? ? int i = 0;
? ? ? ? ? ? foreach (DataRow dataRow in dataTable.Rows)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //往每個(gè)單元格中添加數(shù)據(jù)
? ? ? ? ? ? ? ? row.CreateCell(i).SetCellValue(double.Parse(dataRow[i].ToString()));
? ? ? ? ? ? ? ? i++;
? ? ? ? ? ? }
? ? ? ? ? ? fileStream2.Flush();
? ? ? ? ? ? //設(shè)置表格內(nèi)的公式重新計(jì)算,如果表格中沒(méi)有任何類(lèi)似加減求和這樣的公式的話肝劲,可以不寫(xiě)這一句
? ? ? ? ? ? sheet.ForceFormulaRecalculation = true;
? ? ? ? ? ? //寫(xiě)入文件
? ? ? ? ? ? sheet.Workbook.Write(fileStream2);
? ? ? ? ? ? //寫(xiě)入文件,這兩句要同時(shí)有迁客,要不然插入數(shù)據(jù)后會(huì)出現(xiàn)文件被損壞的情況,導(dǎo)致文件打不開(kāi)
? ? ? ? ? ? xSSFWorkbook.Write(fileStream2);
? ? ? ? ? ? sheet = null;
? ? ? ? ? ? xSSFWorkbook = null;
? ? ? ? ? ? fileStream2?.Close();
? ? ? ? ? ? fileStream2?.Dispose();
? ? ? ? ? ? fileStream1?.Close();
? ? ? ? ? ? fileStream1?.Dispose();
? ? ? ? ? ? xSSFWorkbook?.Clear();
? ? ? ? }
代碼中有注釋了辞槐,可自行消化掷漱,本人親測(cè)代碼實(shí)用無(wú)Bug。