Быстрая настройка формата номера с помощью объекта Excel

Я записываю 12 000 записей с 46 столбцами в виде производственного отчета в файл Excel. Рабочий лист не отображается, пока он заполнен данными.

Предыдущая информация о Stackru научила меня использовать массивы объектов, чтобы помещать значения в диапазоны для скорости. Я надеялся, что это сработало и для форматирования значений.

Фрагмент кода:

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 содержит строки, такие как "h:mma/p" для отображения времени как "12:23a" и "0.00" для отображения чисел как "53/25".

"Dcel.value = aobj" занимает полсекунды. "Dcel.NumberFormat = bobj" занимает 38 секунд.

Любое предложение о том, что я пропустил / неправильно понял? Я бы предпочел 7-секундный отчет (начать Excel, написать, сохранить, закрыть Excel) не займет 45 секунд, потому что я хочу, чтобы числа / даты / время отображались по своему выбору.

2 ответа

Решение

Если у каждого столбца свой формат, попробуйте форматирование для всего столбца. Также для каждого столбца не используйте массив, если форматы идентичны, то вы можете просто использовать одну строку.

Сделайте так для каждого столбца.

Пожалуйста, попробуйте и оставьте отзыв.

После еще нескольких экспериментов я нашел то же решение, что и S Meaden. Поскольку только 14 из 46 столбцов не являются "общими", я собрал номера столбцов для дат, времени и 2-десятичного числа. Проходя по каждой из них, задав диапазон для 12000 записей и 1 столбца, установите формат. Это займет около половины секунды для всех столбцов.

Странно, что установка строки из 46 ячеек с использованием массива из 46 объектов занимает гораздо больше времени, чем 12000 ячеек в столбце, но вы здесь.

Спасибо всем.

Другие вопросы по тегам