it-swarm.com.de

EPPlus: Wie kann ich Rahmen um jede Zelle zuweisen, nachdem ich LoadFromCollection angewendet habe?

In meinem ActionResult Export konnte ich das Modell in mein ExcelPackage laden.

Wenn ich Probleme habe, ordne ich jeder Zelle einen Rahmen zu, sobald LoadFromCollection angewendet wird. Während das AutoFitColumns korrekt angewendet wird, funktioniert der Rahmenstil, den ich angewendet habe, nur bei Cells["D1"], aber nicht auf dem Tisch.

BorderAround platziert erfolgreich einen Rahmen um die gesamte Tabelle, aber ich würde lieber den Rahmen um die Zellen innerhalb der Tabelle anwenden. Gibt es eine Möglichkeit, das zu tun?

// 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

Wenn ich die Anzahl der Spalten im Modell kenne, kann ich die Anzahl der Zeilen mit einer Funktion zählen und dies tun:

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

Oder mit mehr Kontext. Ich habe überprüft, ob EPPlus eine Zeichenfolgenvariable in Cells [] akzeptiert. Auf diese Weise kann ich die gesamte Tabelle auswählen und meinen Rahmenstil sowie AutoFitColumns{} Korrekt anwenden. Alles, was ich manuell tun muss, ist, die Startspalte und die Endspalte in die Variable modelRange einzugeben.

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