快速设置使用Excel对象的数字格式

我写了12000条logging,作为生产报告,有46列,写入excel文件。 充满数据时不显示工作表。

先前的StackOverflow信息教会了我使用对象数组将数值放在速度范围内。 我曾希望这也可以用于格式化值。

代码片段:

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是符合范围的对象(,)数组。 bobj包含显示时间为“12:23a”的string,如“h:mma / p”,以及显示数字为“53/25”的“0.00”。

“dcel.value = aobj”需要半秒。 “dcel.NumberFormat = bobj”需要38秒。

对于我错过/误解的任何build议? 我宁愿7秒的报告(开始Excel,写,保存,closuresExcel)不花45秒,因为我希望数字/date/时间出现,因为我select。

如果每列都有其自己的格式,然后尝试每个整列的格式。 也为每列不要使用数组,如果格式是相同的,那么你可以只使用一个string。

为每一栏都这样做。

请尝试并提供反馈。

经过一些更多的实验后,我发现了与S Meaden相同的解决scheme。 由于46列中只有14列不是“一般”,我收集了date,时间和二进制数字的列号。 循环遍历每一个,为12000条logging和1列创build一个范围,设置格式。 这需要大约半秒的时间。

奇怪的是,使用46对象数组设置一行46个单元比一列中的12000个单元要长得多,但是在那里。

感谢大家。