我正在尝试使用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但是如果前几行包含较少的单元格,那么当我尝试插入带有额外单元格的行时,它会给出错误。
非常感谢任何帮助。
答案 0 :(得分:8)
如果您使用的是Excel 2007或更高版本,则最佳选项为Open XML SDK 2.0
您还可以修改当前方法。不是单独编写每个值,而是创建一个二维数组来保存所有值。然后获得相同大小的范围,并将范围的值设置为二维数组。这样你只会遭受一次编组COM调用的代价而不是许多你正在处理的代码。
答案 1 :(得分:1)
您可以使用Excel C# inputting into specific cell
中的答案中的代码一次一次插入一行而不是一个单元格当我遇到性能问题时,我认为这与你的相似。
答案 2 :(得分:1)
对于Excel 2002(?)或更高版本,您可以使用简单的表格以HTML格式提供电子表格内容:有关简单示例,请参阅here。这将是最快选项。