Как я могу ускорить создание электронных таблиц Excel Excel из C #? - PullRequest
3 голосов
/ 05 июля 2011

В настоящее время я пишу около 200 таблиц Excel, используя Excel 2007 с C # COM Interop.

К сожалению, мне нужно около 4 минут, чтобы написать эти 200 листов - каждый лист имеет около 1000 строк с 8-10 столбцами.

Как мне ускорить процесс?

Мой код выглядит следующим образом:

var xlApp = new Excel.Application();
xlApp.DisplayAlerts=false;
foreach (x in z) {
   var wb = xlApp.Workbooks.add(XLWBATemplae.xlWBATWorksheet);
   var ws = (Worksheet)wb.Worksheets[1];
   //fill data into sheet
   wb.SaveAs(fileName);
   wbClose();
}

уточнение: я сейчас заполняю каждую клетку индивидуально

Я опробую некоторые из ваших предложений, а затем приму лучшее решение.

Ответы [ 5 ]

5 голосов
/ 05 июля 2011

Вы можете полностью избавиться от COM Interop, используя EPPlus (здесь) . Эта библиотека создает файлы Excel с использованием формата XML 2007, а не интерфейса COM COM Excel, и в результате намного быстрее.

4 голосов
/ 05 июля 2011

Вы можете ускорить это, рассматривая 1000 строк с 8-10 столбцами как массив и копируя ваши данные в этот массив за один раз вместо заполнения каждой из этих 8000-10000 ячеек самостоятельно.Для получения дополнительной информации см. Здесь: Запись массива в диапазон Excel

0 голосов
/ 05 июля 2011

Иногда достаточно сохранить ваши файлы в виде текстового файла в формате csv . Он может быть открыт в Excel, как обычный лист Excel.

0 голосов
/ 05 июля 2011

Я бы не использовал приложение Excel для этого, вместо этого написал бы его прямо из c #, используя библиотеку: Создайте файл Excel (.XLS и .XLSX) из C #

НАМНОГО быстрее.

Ргдс ГДж

0 голосов
/ 05 июля 2011

Рассматривали ли вы использование инструментов C #, таких как NPOI .
Он работает очень хорошо и не требует использования COM Interop.
Скотт Митчелл недавно написал об этом недавно .

...