エクスポートしたActionResultで、モデルをExcelPackageに読み込むことができました。
私が問題を抱えているのは、LoadFromCollection
が適用されると各セルの周囲に境界線を割り当てることです。 AutoFitColumns
は正しく適用されますが、適用した境界線スタイルはCells["D1"]
でのみ機能し、テーブルでは機能しません。
BorderAround
はテーブル全体に境界線を正常に配置しますが、セルの境界線に適用したいですinsideテーブル。それを行う方法はありますか?
// 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();
モデルの列数がわかっている場合、関数を使用して行数をカウントし、これを行うことができます。
var modelRows = exportQuery.Count()+1;
string modelRange = "D1:F" + modelRows.ToString();
var modelTable = worksheet.Cells[modelRange];
または、より多くのコンテキストで。 EPPlusがCells []の文字列変数を受け入れることを確認しました。これにより、テーブル全体を選択し、ボーダースタイルと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();