从C#编写excel的有效方法

时间:2011-11-10 06:11:47

标签: c# performance excel

我正在尝试使用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];
    }
}

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

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

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:1)

您可以使用Excel C# inputting into specific cell

中的答案中的代码一次一次插入一行而不是一个单元格

当我遇到性能问题时,我认为这与你的相似。

答案 2 :(得分:1)

对于Excel 2002(?)或更高版本,您可以使用简单的表格以HTML格式提供电子表格内容:有关简单示例,请参阅here。这将是最快选项。