我正在将一个包含46列的12,000条记录作为生产报告写入excel文件。填充数据时不显示工作表。
之前的StackOverflow信息告诉我使用对象数组将值放在速度范围内。我曾希望这也可以用于格式化值。
代码片段:
sh 'composer install'
aobj和bobj是适合范围的对象(,)数组。 bobj包含诸如" h:mma / p"之类的字符串。将时间显示为" 12:23a"和" 0.00"将数字显示为" 53/25"。
" dcel.value = aobj"需要半秒钟。 " dcel.NumberFormat = bobj"需要38秒。
对于我错过/误解的内容有任何建议吗?我宁愿一个7秒的报告(开始excel,写,保存,关闭excel)不需要45秒,因为我希望数字/日期/时间按照我的选择显示。
答案 0 :(得分:0)
如果每列都有自己的格式,请尝试按整列进行格式化。同样对于每一列都不使用数组,如果格式相同,那么你可以只使用一个字符串。
每列都这样做。
请尝试并提供反馈。
答案 1 :(得分:0)
经过一些实验,我找到了与S Meaden相同的解决方案。由于46列中只有14列不是“常规”,因此我收集了日期,时间和2位小数的列号。循环遍历其中的每一个,生成12000条记录和1列的范围,设置格式。所有列都需要大约半秒钟。
奇怪的是,使用46个对象数组设置一行46个单元格所花费的时间比一列中的12000个单元格要长得多,但你确实存在。
谢谢大家。