verwendetes Datenbanksystem: XML Excel 2007
Hallo zusammen,
ich lese zu Fuß die XML Daten in einem XLSX Dokument.
Klappt EIGTL. ganz gut bis auf folgendes Phänomen :
Ich kann nicht auf die Subelemente zugreifen weils einfach keine gibt Oo
Im Anhang seht ihr den Aufbau der jeweiligen Row bzw. Cell
Und den passenden Fehler.
Unten seht ihr meinen XMl Lesenden Code.
Jmd ne Idee ?
Grüße
var workbookname = GetWorkbookName(doc.Element("worksheet").Element("pageSetup").Attribute("r" + 0x3A + "id").Value);
var rows = GetExcelRows(from i in doc.Element("worksheet").Element("sheetData").Elements("row") select i);
private ExcelCell GetExcelCell(XElement xmlElement)
{
var column = GetColumnName(xmlElement.Attribute("r").Value);
var value = xmlElement.Attribute("t") != null
? _sharedStrings[int.Parse(xmlElement.Element("v").Value)]
: string.Empty;
var formula = xmlElement.Attribute("f") != null
? xmlElement.Attribute("f").Value
: string.Empty;
return new ExcelCell(GetColumnIndex(xmlElement.Attribute("r").Value),column,value,formula);
}
dieser Weg ist aber sehr steinig! Ich kenne mich besser bei Word (docx) aus. Aber Excel ist derselbe Schmäh:
Du liest direkt die xml-Struktur aus, aber Info's die du benötigst liegen ggf. nicht in dieser einen xml-Datei, sondern werden per ID referenziert. Der Wert liegt dann in einer anderen Datei.
Mit dem Open XML SDK 2.0 for Microsoft Office kannst du hier bequemer arbeiten. Hier wird dir ein richtiges Modell der OpenXML Dateien angeboten mit Datentypen usw.
Hi,
mir ist durchaus bewusst das es ein steiniger Weg ist aber mit der schnellste.
Implementierungen von Open XML zB ClosedXML bei Codeplex sind aber stinkend langsam bei vielen Daten. Und das liegt zu 80 % an der SDK .
Deswegen der weg zu Fuß.
Mein Problem sind nicht die Daten zu den shared Strings zu zu ordnen, mir geht es darum das eigtl. eindeutige Elemente nicht als solche erkannt werden.
Vll . hat jmd noch ne Idee ?
Grüße
Soo anch langem forschen nun rausgefunden :
der XELementname ist der Namespace + Element !
{http://schemas.openxmlformats.org/officeDocument/2006/relationships}id
Grüße