我需要通过网络系统在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秒钟的时间。有什么方法可以加快此过程,例如在内存中创建整个工作表,而不是逐个单元地填充?

最佳答案

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

例如我在项目中使用的类似此功能的东西:

    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;
    }

关于javascript - 改进创建Excel工作表的速度(以编程方式),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4013539/

10-09 18:02