提高创建Excel工作表速度(以编程方式)

时间:2010-10-25 10:07:31

标签: javascript asp.net excel export-to-excel

我需要通过网络系统在excel中生成某种报告。我目前的代码如下(简化):

//[javascript inside .aspx page]

ExcelApp = new ActiveXObject("Excel.Application");
ExcelSheet = new ActiveXObject("Excel.Sheet");

ExcelSheet.Windows(1).WindowState = 2;
ExcelSheet.Application.Visible = false;

for (i=1; i< [elementNumber]; i++)
{
   ExcelSheet.ActiveSheet.Cells(i,1).Value = myXML.documentElement.childNodes(i).text;
}

ExcelSheet.Application.Visible = true;

即使我只填充少数几行,也需要大约10秒钟。有没有办法加快这个过程,比如在内存中创建整张表而不是逐个单元填充?

2 个答案:

答案 0 :(得分:2)

首先定义一个object [,]数组。无论多大,您都不会再看到时间延迟。顺便说一下,数组也可以保存公式。

e.g。像我在项目中使用的这个函数:

    public static void AddValueArrayToSheet(_Worksheet ws, Range rangeTopLeft, object[,] values) {
        Range cellRange = ws.Cells.get_Range(rangeTopLeft, rangeTopLeft[values.GetUpperBound(0) + 1, values.GetUpperBound(1) + 1]);
        cellRange.Value = values;
    }

答案 1 :(得分:0)

您可以尝试禁用重新计算以查看是否有帮助

Application.Calculation = xlCalculationManual

Application.Calculation = xlCalculationAutomatic

除此之外,这个页面有一些很好的技巧可以从excel中获得尽可能多的性能

http://www.cpearson.com/excel/optimize.htm