使用 Excel 对象快速设置数字格式
Setting number format using Excel object quickly
我正在将 12,000 条 46 列的记录作为生产报告写入 excel 文件。工作表在充满数据时不显示。
以前的 Whosebug 信息教会我使用对象数组将值放在范围内以提高速度。我曾希望这也适用于格式化值。
代码片段:
objExcel.Calculation = XlCalculation.xlCalculationManual
objExcel.ScreenUpdating = False
dcel = objWS.Range(objWS.Cells(rowdatastart, 1), objWS.Cells(rowdataend, nProdReportCol.ProdReportColCount - 2))
dcel.Value = aobj
dcel.NumberFormat = bobj
objExcel.ScreenUpdating = True
objExcel.Calculation = XlCalculation.xlCalculationAutomatic
aobj 和 bobj 是符合范围的 object(,) 数组。 bobj 包含字符串,例如 "h:mma/p" 将时间显示为“12:23a”,以及“0.00”将数字显示为“53/25”。
"dcel.value = aobj"需要半秒。
"dcel.NumberFormat = bobj" 需要 38 秒。
对我的 missed/misunderstood 有什么建议吗?我宁愿 7 秒的报告(开始 excel、写入、保存、关闭 excel)而不是 45 秒,因为我希望 numbers/dates/times 按我的选择出现。
如果每列都有自己的格式,请尝试对整列进行格式化。同样对于每一列不要使用数组,如果格式相同那么你可以只使用一个字符串。
对每一列都这样做。
请尝试并提供反馈。
经过更多的实验,我找到了与 S Meaden 相同的解决方案。由于 46 列中只有 14 列不是 "General",我收集了日期、时间和 2 位小数的列号。遍历其中的每一个,为 12000 条记录和 1 列生成一个范围,设置格式。所有列都需要大约半秒的时间。
奇怪的是,使用 46 个对象数组设置一行 46 个单元格比在一列中设置 12000 个单元格花费的时间要长得多,但就是这样。
谢谢大家
我正在将 12,000 条 46 列的记录作为生产报告写入 excel 文件。工作表在充满数据时不显示。
以前的 Whosebug 信息教会我使用对象数组将值放在范围内以提高速度。我曾希望这也适用于格式化值。
代码片段:
objExcel.Calculation = XlCalculation.xlCalculationManual
objExcel.ScreenUpdating = False
dcel = objWS.Range(objWS.Cells(rowdatastart, 1), objWS.Cells(rowdataend, nProdReportCol.ProdReportColCount - 2))
dcel.Value = aobj
dcel.NumberFormat = bobj
objExcel.ScreenUpdating = True
objExcel.Calculation = XlCalculation.xlCalculationAutomatic
aobj 和 bobj 是符合范围的 object(,) 数组。 bobj 包含字符串,例如 "h:mma/p" 将时间显示为“12:23a”,以及“0.00”将数字显示为“53/25”。
"dcel.value = aobj"需要半秒。 "dcel.NumberFormat = bobj" 需要 38 秒。
对我的 missed/misunderstood 有什么建议吗?我宁愿 7 秒的报告(开始 excel、写入、保存、关闭 excel)而不是 45 秒,因为我希望 numbers/dates/times 按我的选择出现。
如果每列都有自己的格式,请尝试对整列进行格式化。同样对于每一列不要使用数组,如果格式相同那么你可以只使用一个字符串。
对每一列都这样做。
请尝试并提供反馈。
经过更多的实验,我找到了与 S Meaden 相同的解决方案。由于 46 列中只有 14 列不是 "General",我收集了日期、时间和 2 位小数的列号。遍历其中的每一个,为 12000 条记录和 1 列生成一个范围,设置格式。所有列都需要大约半秒的时间。
奇怪的是,使用 46 个对象数组设置一行 46 个单元格比在一列中设置 12000 个单元格花费的时间要长得多,但就是这样。
谢谢大家