所以我有一个将Datatable转换为NPOI工作簿的功能。
以下是代码:
public static XSSFWorkbook DataTableToExcel(DataTable dt, string sheetName = "Sheet1")
{
if (dt.Rows.Count > 0)
{
var excel = new XSSFWorkbook();
var sheet = (XSSFSheet)excel.CreateSheet(sheetName);
var col = sheet.CreateRow(0);
//iterate columns
for(int x = 0; x < dt.Columns.Count; x++)
{
col.CreateCell(x).SetCellValue(dt.Columns[x].ColumnName);
}
//iterate row
for (int r = 0; r < dt.Rows.Count; r++) //SLOW AS HELL
{
var row = sheet.CreateRow(r + 1);
for (int c = 0; c < dt.Columns.Count; c++)
{
value = dt.Rows[r][c].ToString();
row.CreateCell(c).SetCellValue(value);
}
}
return excel;
}
return null;
}
我的问题是循环导致性能太差(10.000行大约需要30分钟)。
有没有办法改善表现?