提高DataTable性能(循环)

时间:2015-09-28 09:32:22

标签: c# .net performance datatable npoi

所以我有一个将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分钟)。

有没有办法改善表现?

0 个答案:

没有答案