EPPlus: как я могу назначить границу вокруг каждой ячейки после применения LoadFromCollection?

В моем экспорте ActionResult я смог загрузить модель в свой ExcelPackage.

В тех случаях, когда возникают проблемы, назначается граница вокруг каждой ячейки после применения LoadFromCollection. В то время как AutoFitColumns правильно применяется, применяемый стиль границы применяется только к Cells["D1"], но не к таблице.

BorderAround успешно помещает границу вокруг всей таблицы, но я скорее применим к границе к ячейкам внутри таблицы. Есть ли способ, которым я могу это сделать?

// Fill worksheet with data to export
var modelCells = worksheet.Cells["D1"];
var border = modelCells.Style.Border.Top.Style = modelCells.Style.Border.Left.Style = modelCells.Style.Border.Right.Style = modelCells.Style.Border.Bottom.Style = ExcelBorderStyle.Medium;                    

modelCells
    .LoadFromCollection(Collection: exportQuery, PrintHeaders: true)
    .AutoFitColumns(); 

Ответы

Ответ 1

Если я знаю количество столбцов, которые имеет модель, я могу подсчитать количество строк с помощью функции и сделать это:

var modelRows = exportQuery.Count()+1;    
string modelRange = "D1:F" + modelRows.ToString();
var modelTable = worksheet.Cells[modelRange];

Или, с большим контекстом. Я подтвердил, что EPPlus примет строковую переменную в ячейках [], что позволяет мне выбрать всю таблицу и правильно применить мой стиль границ и AutoFitColumns{}. Все, что мне нужно сделать вручную, - введите начальный столбец и конечный столбец в переменной modelRange.

var modelCells = worksheet.Cells["D1"];
var modelRows = exportQuery.Count()+1;    
string modelRange = "D1:F" + modelRows.ToString();
var modelTable = worksheet.Cells[modelRange];

// Assign borders
modelTable.Style.Border.Top.Style = ExcelBorderStyle.Thin;
modelTable.Style.Border.Left.Style = ExcelBorderStyle.Thin;
modelTable.Style.Border.Right.Style = ExcelBorderStyle.Thin;
modelTable.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;


// Fill worksheet with data to export
modelCells.LoadFromCollection(Collection: exportQuery, PrintHeaders: true);
modelTable.AutoFitColumns();