日期:2014-05-16  浏览次数:20342 次

请教各位,利用 JS 导出(创建) word,速度太慢问题!
现在,我已经基本上用 JS 做到,将信息导出到 word 中,成功后的效果很不错。但问题是速度太慢了!
关键代码:
JScript code

// 从第三行开始插入
var r = 3;
for(var i = 0, i_len = exportData.length - 1; i < i_len; i++ ) {
    docTble.Rows.Add();
    var tmpData = exportData[i];
    for(var j = 0, j_len = tmpData.length; j < j_len; j++) {
        docTble.Cell(r, j + 1).Range.Text = tmpData[j];
    }
    r++;
}


exportData 是 JS 二维数组!里面每一个值对应到表格中一个单元格!现在exportData的大小是 728 * 12。
在一个不错的电脑上测试,用时2分30秒(我本机用时5分钟)。用时太久,无论如何是达不到要求的。
想请大家帮忙,提出优化的手段!
我想到的是,一次插入一行,而不是一个单元格一个单元格的填值!但是,我不知道利用 JS,能否操作 word 表格到这个地步。
恳请各位指导!或是给在下一些相关链接看看!有描述不清楚,导致大家不好解答的,请告诉一下。
非常感谢啦!

------解决方案--------------------
不要直接操作WORD
可以把数据都准备好了之后,一次性拷贝到WORD
------解决方案--------------------
探讨
不要直接操作WORD
可以把数据都准备好了之后,一次性拷贝到WORD

------解决方案--------------------
jacob 是个坑爹的东西,只能用在windows下,其原理和你在前端用是一样的,需要服务器安装word,
那种破玩意没有任何使用价值。有几个服务器是windows系统啊,还安装word。就算装了,链接数一多
肯定崩溃。

我原来的做法是写一个word模板,模板中需要有一个vba,然后当用户打开这个word是这个VBA会运行
并从word中某个位置读取数据,然后处理,最后将读取的数据删除。这样能保证这个VBA只运行一次。
之后只要用poi之类的java类库往约定的位置写数据就行了,写完之后将模板另存为要到处的文件了。
这是通用处理方案,理论上只有vba能运行任何效果都能做出来。