web-dev-qa-db-ja.com

EPPlus:LoadFromCollectionを適用した後、各セルの周囲に境界線を割り当てるにはどうすればよいですか?

エクスポートした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(); 
27
user4864716

モデルの列数がわかっている場合、関数を使用して行数をカウントし、これを行うことができます。

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();
45
user4864716