ExcelPackage и 98 тысяч строк - PullRequest
       40

ExcelPackage и 98 тысяч строк

4 голосов
/ 21 декабря 2009

Я хочу написать файл Excel (2007) с помощью пакета кода codeplex excelpackage, но написание файла Excel занимает много времени. Я не нашел никакого метода, который мог бы принять источник данных.

часть моего кода:

var newFile = new FileInfo(GlobalVariables.Compare2007Path);

using (var excelpackage = new ExcelPackage(newFile))
{
  var myWorkbook = excelpackage.Workbook;
  myWorkbook.Worksheets.Add("sheetname");

  var xlWorkSheet = xlWorkBook.Worksheets["sheetname"];

  //loop the data and fill the columns
  var rowCount = 2;
  foreach (var compare in objCompare)
  {
    xlWorkSheet.Cell(rowCount, 1).Value = compare.adserverIdSite.ToString();
    xlWorkSheet.Cell(rowCount, 2).Value = compare.site;
    xlWorkSheet.Cell(rowCount, 3).Value = compare.adserverIdZone.ToString();
    xlWorkSheet.Cell(rowCount, 4).Value = compare.zone;
    xlWorkSheet.Cell(rowCount, 5).Value = compare.position;
    xlWorkSheet.Cell(rowCount, 6).Value = compare.weekday;
    xlWorkSheet.Cell(rowCount, 7).Value = compare.oldimps.ToString();
    xlWorkSheet.Cell(rowCount, 8).Value = compare.olduu.ToString();
    xlWorkSheet.Cell(rowCount, 9).Value = compare.oldimpsuu.ToString();
    xlWorkSheet.Cell(rowCount, 10).Value = compare.newimps.ToString();
    xlWorkSheet.Cell(rowCount, 11).Value = compare.newuu.ToString();
    xlWorkSheet.Cell(rowCount, 12).Value = compare.newimpsuu.ToString();
    xlWorkSheet.Cell(rowCount, 13).Value = compare.diffimps.ToString();
    xlWorkSheet.Cell(rowCount, 14).Value = compare.diffimpsperc.ToString();
    rowCount++;
  }
  excelpackage.Save();
}

Или есть другие варианты помимо excelpackage.

Ответы [ 3 ]

7 голосов
/ 22 декабря 2009

Я нашел свое решение для производительности пакета Excel. Это патч, который вы должны применить к ExcelPackage. Патч можно найти здесь . Найдите идентификатор: 1042 или обновление 1233 (больше возможностей в этом патче).

С помощью патча вы можете добавить данные на пустой лист. Добавление 98000 записей с 14 столбцами было сделано за считанные секунды.

1 голос
/ 21 декабря 2009

SpreadsheetGear for .NET сделает это.

Возможно, вы захотите взглянуть на образец решения SpreadsheetGear Explorer (для C # или VB), который устанавливается вместе с SpreadsheetGear. В Advanced -> Performance есть пример, показывающий быстрый способ заполнения ячеек. На моей машине (разогнанный Intel QX6850) он создает 50000 строк по 4 столбца за 0,05 секунды.

Вы можете загрузить бесплатную пробную версию здесь , которая установит компонент SpreadsheetGear и образец SpreadsheetGear Explorer, упомянутый выше.

Отказ от ответственности: я владею SpreadsheetGear LLC

0 голосов
/ 21 декабря 2009

Я использовал (и купил) SmartXL для создания файлов Excel. Это не бесплатно, но это сэкономило мне много времени. Вы можете попробовать это бесплатно в течение 30 дней.

...