以一个把DataTable的数据添加到xlsx表格为例:
步骤如下:
第一步:在管理解决方案NuGet库中添加NPOI的引用,如图(1)所示,只需安装DotNetCore.NPOI库即可。
第二步:上代码,导出方法。
private void AddExcelData(DataTable dataTable)
{
//文件路径
string excelPath = @"E:/xxx.xlsx";
//读取流
FileStream fileStream1 = new FileStream(excelPath, FileMode.Open, FileAccess.Read, FileShare.Read);
//注意:xlsx文件才可以使用XSSFWorkbook类
XSSFWorkbook xSSFWorkbook = new XSSFWorkbook(fileStream1);
//获取工作表,参数为第几个表
ISheet sheet = xSSFWorkbook.GetSheetAt(0);
//写入流
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)
{
//往每个单元格中添加数据
row.CreateCell(i).SetCellValue(double.Parse(dataRow[i].ToString()));
i++;
}
fileStream2.Flush();
//设置表格内的公式重新计算,如果表格中没有任何类似加减求和这样的公式的话,可以不写这一句
sheet.ForceFormulaRecalculation = true;
//写入文件
sheet.Workbook.Write(fileStream2);
//写入文件,这两句要同时有,要不然插入数据后会出现文件被损坏的情况,导致文件打不开
xSSFWorkbook.Write(fileStream2);
sheet = null;
xSSFWorkbook = null;
fileStream2?.Close();
fileStream2?.Dispose();
fileStream1?.Close();
fileStream1?.Dispose();
xSSFWorkbook?.Clear();
}
代码中有注释了,可自行消化,本人亲测代码实用无Bug。