Эффективный способ написать Excel из C # - PullRequest
1 голос
/ 10 ноября 2011

Я пытаюсь сгенерировать Excel, используя c #, ниже приведен фрагмент кода для него

Microsoft.Office.Interop.Excel;
.
.
.
foreach (string[] rowContents in lstOutputFileContent)
{
    for(int i = 0; i < rowContents.Length; i++)
    {
        sheet.Cells[currRow, i + 1] = rowContents[i];
    }
}

, но проблема в том, что lstOutputFileContent содержит, скажем, более 50K строк, тогда запись занимает слишком много времени (4-5 минут).Есть ли лучший / более быстрый способ написать Excel в этом сценарии, т.е. у меня есть список массивов строк, и я хочу написать это в Excel.

Я пытался использовать OleDb, но в случае, когда первые несколько строк содержат меньшеЯчейки, то, когда я пытаюсь вставить строку с дополнительной ячейкой, это выдает ошибку.

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

8 голосов
/ 10 ноября 2011

Если вы используете Excel 2007 или выше, лучшим вариантом будет Open XML SDK 2.0

Вы также можете изменить текущий метод. Вместо того, чтобы записывать каждое значение по отдельности, создайте двумерный массив для хранения всех значений. Затем получите диапазон того же размера и установите значение для диапазона, чтобы быть двумерным массивом. Таким образом, вы платите только за один вызов COM, а не за многие, с которыми вы имели дело.

1 голос
/ 10 ноября 2011

Для Excel 2002 (?) Или выше, вы можете просто обслуживать содержимое электронных таблиц в формате HTML, используя простую таблицу: см. здесь для простого примера. Это будет опция быстрая .

1 голос
/ 10 ноября 2011

Вы можете вставить строку за раз вместо ячейки за раз, используя код в моем ответе на Excel C #, вводящий в определенную ячейку

Я понял это, когда столкнулсяпроблемы с производительностью, я думаю, похожи на ваши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...