如何加快从C#创建Excel电子表格的速度?

12 浏览
0 Comments

如何加快从C#创建Excel电子表格的速度?

目前我正在使用Excel 2007和C# COM互操作编写大约200个Excel电子表格。

不幸的是,我需要大约4分钟来编写这些200个表格-每个表格大约有1000行,8-10列。

我该如何加快速度?

我的代码基本上是这样的:

var xlApp = new Excel.Application();
xlApp.DisplayAlerts=false;
foreach (x in z) {
   var wb = xlApp.Workbooks.add(XLWBATemplae.xlWBATWorksheet);
   var ws = (Worksheet)wb.Worksheets[1];
   //填充数据到表格
   wb.SaveAs(fileName);
   wbClose();
}

澄清一下:我现在是逐个填充每个单元格的。

我将尝试一些您的建议,然后接受最佳解决方案。

0
0 Comments

最近有人问到如何在C#中加速创建Excel电子表格的问题。这个问题的出现可能是因为创建大量的Excel电子表格非常耗时,影响了程序的性能。下面将介绍一种解决方法。

在解决这个问题时,我们可以考虑使用C#工具,如NPOI。NPOI是一个很好的选择,它不需要使用COM互操作,可以方便地进行操作。

Scott Mitchell在最近的一篇文章中谈到了NPOI的使用。他在文章中详细介绍了如何使用NPOI来创建Excel电子表格。我们可以参考这篇文章来了解更多关于NPOI的信息。

如果你遇到了创建Excel电子表格速度慢的问题,可以考虑使用NPOI这个工具来加快速度。通过使用NPOI,你可以更高效地创建Excel电子表格,提高程序的性能。

希望这个解决方法对你有所帮助。如果你有其他问题,可以继续提问。

0
0 Comments

问题的原因是创建Excel电子表格的速度较慢,使用COM Interop接口会导致性能下降。解决方法是使用EPPlus库来创建Excel文件,它使用2007 XML格式而不是Excel COM接口,因此速度更快。这个库的性能很好,API也很方便,可以快速地改变程序。另外,还可以尝试其他解决方案来进一步提高速度。需要注意的是EPPlus库是GPL协议的,如果在商业产品中使用,必须将产品作为开源发布。

EPPlus是一个非常好用的库,不要重复造轮子!我试过EPPlus,并且很满意它的性能和API。改变我的程序只需要不到一个小时,因为API非常相似。虽然我明天会给出具体的性能数据,但它的速度只是以前的一小部分(比以前快8-10倍)。

我现在计算了一下,实际上它的速度快了23倍。你也应该尝试一下某人的解决方案,并看看它的速度快了多少。

需要注意的是EPPlus是GPL协议的。他声称它是LGPL,但由于它仍然是ExcelPackage的衍生作品,所以它仍然是GPL协议的,就像它的前身一样。如果你在商业产品中使用它,技术上你的产品也必须作为开源发布。

0
0 Comments

在C#中创建Excel电子表格的过程中,可能会遇到速度较慢的问题。这可能是因为在填充每个单元格时,需要处理大量的行和列。

为了解决这个问题,可以将1000行8到10列的数据视为数组,并一次性将数据复制到这个数组中,而不是逐个填充8000到10000个单元格。可以参考以下链接了解更多信息:[Write Array to Excel Range](https://stackoverflow.com/questions/536636)

以下是实现该方法的示例代码:

using Excel = Microsoft.Office.Interop.Excel;
// 创建Excel应用程序对象
Excel.Application excelApp = new Excel.Application();
// 创建工作簿对象
Excel.Workbook workbook = excelApp.Workbooks.Add();
// 获取第一个工作表
Excel.Worksheet worksheet = workbook.Sheets[1];
// 创建一个数组来保存要写入的数据
object[,] data = new object[1000, 10];
// 将数据填充到数组中
// 使用一次性复制的方法将数组数据写入Excel中的范围
Excel.Range range = worksheet.Range[worksheet.Cells[1, 1], worksheet.Cells[1000, 10]];
range.Value = data;
// 保存并关闭工作簿
workbook.SaveAs("YourFilePath");
workbook.Close();
// 退出Excel应用程序
excelApp.Quit();

通过将数据填充到数组中,并使用一次性复制的方法将数组数据写入Excel范围,可以大大提高创建Excel电子表格的速度。这种方法避免了逐个填充单元格的过程,使得数据写入更加高效。

0