Laden...

OpenXml Spreadsheet spaltenweise beschreiben

Erstellt von Caveman vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.348 Views
Caveman Themenstarter:in
187 Beiträge seit 2009
vor 7 Jahren
OpenXml Spreadsheet spaltenweise beschreiben

Hallo,

aufgrund dieses Threads habe ich mich nun mit OpenXml auseinandergesetzt und begonnen meine Tools von der Interop Technik nach OpenXml umzustellen.

Das funktioniert ganz gut und ist wahnsinnig schnell. Danke Abt für den Tipp! 👍
Nun habe ich aber ein Problem, was ich einfach nicht gelöst bekomme und auch den Grund nicht verstehe.
Folgende Methode erzeugt eine Exception in der Append-Methode, wenn der else if-Block ausgeführt wird. Die Exception lautet "Non-composite elements do not have child elements."

        
private void writeSheetHeader(ExcelHeaderOrientations orientation, List<string> headers)
{
    if (orientation == ExcelHeaderOrientations.HORIZONTAL)
    {
        Row row = new Row();
        for (int i = 0; i < headers.Count; i++)
        {
            row.Append(BuildCell(headers.ElementAt(i), CellValues.String));
        }
        WorksheetData.AppendChild(row);
    }
    else if (orientation == ExcelHeaderOrientations.VERTICAL)
    {
        Column column = new Column();
        for (int i = 0; i < headers.Count; i++)
        {
            Cell cell = BuildCell(headers.ElementAt(i), CellValues.String);
            column.Append(cell); //  <--- erzeugt eine Exception
        }
        WorksheetData.AppendChild(column);
    }
}

Ist es nicht möglich, eine Tabelle spaltenweise zu schreiben?
Alle Codebeispiele, die ich im Internet gefunden habe, schreiben immer zeilenweise.

5.658 Beiträge seit 2006
vor 7 Jahren

Hi Caveman,

hier gibt es Lösungen zu deinem Problem:
Trouble added columns to define width using OpenXML und Add Columns to Existing Excel 2007 workbook using Open Xml Ask Question up vote

Allerdings brauchst du die Spalten bzw. Zeilen gar nicht explizit anlegen, sondern kannst auch direkt darauf zugreifen und Inhalte ändern: How to: Insert text into a cell in a spreadsheet document (Open XML SDK)

Weeks of programming can save you hours of planning