从C#编写excel的有效方法

tec*_*rer 1 c# excel performance

我正在尝试使用c#生成excel以下是它的代码片段

Microsoft.Office.Interop.Excel;
.
.
.
foreach (string[] rowContents in lstOutputFileContent)
{
    for(int i = 0; i < rowContents.Length; i++)
    {
        sheet.Cells[currRow, i + 1] = rowContents[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题是当lstOutputFileContent包含超过50K的行时,它的写入时间太长(4-5分钟).在这种情况下是否有更好/更快的方法来编写excel,即我列出了字符串数组,我想把它写成excel.

我尝试使用OleDb但是如果前几行包含较少的单元格,那么当我尝试插入带有额外单元格的行时,它会给出错误.

任何帮助将不胜感激.

Joh*_*her 8

如果您使用的是Excel 2007或更高版本,则最佳选择是Open XML SDK 2.0

您还可以修改当前方法.不是单独编写每个值,而是创建一个二维数组来保存所有值.然后获得相同大小的范围,并将范围的值设置为二维数组.这样你只会遭受一次编组COM调用的代价,而不是许多你正在处理的问题.

  • 实际上,使用带有Range的二维阵列是最快的解决方案. (2认同)
  • aashutoshsingh:那不是真的.如果你创建一个*object*数组,然后将字符串或数字放入其中,电子表格将键入单元格以匹配对象的类型. (2认同)