Lesen von Excel-Dateien mithilfe von OpenXML
Ich versuche zu Lesen von Excel-Dateien via OpenXML und sucht die Ausgabe in eine CSV-Datei. Derzeit liest es jede Zelle in einer separaten Zeile (aufgrund writeline) oder einer einzigen Zeile (wenn mit write). Was ist der beste Weg, um zu Lesen und bestens in einem tabellarischen format wie in Excel? Gibt es eine eingebaute Funktion in OpenXML, die ich nutzen kann?
static void Main(string[] args) { String xlDocName = @"C:\Users\xlp111\source.xlsx"; using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(xlDocName, false)) { WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; string cellValue = string.Empty; foreach(WorksheetPart worksheetPart in workbookPart.WorksheetParts) { OpenXmlReader reader = OpenXmlReader.Create(worksheetPart); while (reader.Read()) { if (reader.ElementType == typeof(Row)) { reader.ReadFirstChild(); do { if (reader.ElementType == typeof(Cell)) { Cell c = (Cell)reader.LoadCurrentElement(); if (c.DataType != null && c.DataType == CellValues.SharedString) { SharedStringItem ssi = workbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(int.Parse(c.CellValue.InnerText)); cellValue = ssi.Text.Text; Console.WriteLine(cellValue); } } } while (reader.ReadNextSibling()); } } } Console.ReadLine(); } } }
Related post hier.
InformationsquelleAutor user793468 | 2016-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit:
Verwendung von Open XML SDK für Microsoft Office
installieren V2 von :https://www.microsoft.com/en-eg/download/details.aspx?id=5124&wa=wsignin1.0
(oder V2.5)
Die folgende Klasse konvertieren excel-sheet in CSV-Datei mit delimeter
Wie zu verwenden:
Es fügt ein Trennzeichen an das Ende jeder Zeile. Anregungen zu Umgang?
den code nehme an, das NEWLINE-Zeichen am Ende der Zeile. Sie brauchen dieses Trennzeichen.
Dein code setzt Voraus, dass ein Newline-Zeichen am Ende jeder Zeile?
Außerdem, wie sollte ich damit umgehen leere/leere Zellen? Derzeit blank/leere Zellen werden ersetzt durch die folgende Zelle Werte. Irgendwelche Vorschläge?
InformationsquelleAutor M.Hassan