Как эффективно выделять ячейки в файлах Excel с помощью EPPlus
При построении отчетов в различных системах используется Excel. Для его формирования из C# кода часто используется EPPlus. EPPlus интуитивно понятен:
1 2 3 4 5 6 7 8 9
var file = new FileInfo(@"c:\temp\myWorkbook.xlsx"); using(var package = new ExcelPackage(file)) { var sheet = package.Workbook.Worksheets.Add("My Sheet"); sheet.Cells["A1"].Value = "Hello World!";
// Save to file package.Save(); }
EPPlus имеет много встроенных механизмов для получения одного и того же результата разными путями, но не все пути одинаково эффективны для больших и очень больших размеров рабочих листов. В частности, я столкнулся с проблемой обведения контуров ячеек и выделения жирным шрифтом документов Excel, содержащих свыше 10000 столбцов.
Используемый мной подход “в лоб” заключался в обводке контуров ячеек непосредственно в месте их заполнения данными с помощью функции DrawBorder:
Использование именованных стилей NamedStyle привело к намного более эффективному построению отчетов Excel. Отчеты стали строиться за 7-10 минут, что почти в 10 раз быстрее первоначального подхода с DrawBorder. Как говорилось в рекламе из 90-х, “не все йогурты одинаково полезны…”