Microsofts Office-Dokumente (Excel, Word, Powerpoint) sind alle nach einem Standardformat Namens OpenXML aufgebaut.Der komplette Inhalt eines Dokumentes ist in einer XML-Datei hinterlegt.
Weitere Informationen zum OpenXML-Format finden Sie hier: http://msdn.microsoft.com/de-de/office/bb738430.aspx
In meiner Reihe soll es um den praktischen Einsatz des OpenXML-SDK in der Version 2 gehen, welches ihr hier beziehen könnt:
OpenXML SDK v2
Im ersten Teil heute geht es um das Auslesen einer Worddatei, und den Zugriff auf spezielle Elemente, zB eine integrierte Tabelle.
(Das Beispieldokument für die folgenden Codebeispiele)
Um mit die API zu verwenden müsst ihr euch das SDK vom oberen Link herunterladen, und einen Verweis auf die enthaltene Assembly setzen.
Um danach die benötigten Klassen verwenden zu können müssen die folgenden Namespaces eingebunden werden:
Im folgenden Beispiel werden alle Textelemente des Dokumentes ausgelesen, welche nicht in einer Tabelle vorkommen.
Danach werden noch Tabellen gesucht, und der Inhalt dieser ausgegeben.
Ich hoffe ihr habt einen kleinen Einblick bekommen.
In den nächsten Teilen werden folgende Themen behandelt:
- schreiben in Worddokumente
- erzeugen von Worddokumenten
- konvertieren von Worddokumenten in ihre HTML - Repräsentation
- Vorstellung hilfreicher Tools zur Arbeit mit OpenXML
Weitere Ressource
Donnerstag, 24. Februar 2011
Mittwoch, 23. Februar 2011
OpenXML nach HTML
Hallo Leute,
da ich letztens vor der Aufgabe stand, Word2010 Dokumente nach HTML zu konvertieren...musste ich mich erstmal auf eine Reise durch das Netz begeben.
Ja, es gibt die Klasse XslCompiledTransform, und mit der Docx2Html.xsl funktioniert damit auch das nötigste, aber eben nicht alles.
Zu meinem Entsetzen musste ich herausfinden, dass einige Dinge rein mit xslt garnicht umzusetzen sind.
Nun, dann habe ich Codeplex einen Besuch abgestattet....und bin auf folgendes gestoßen:
OpenXMLViewerSource
Entpackt und geöffnet ist die Program.cs für uns von Belang:
In dieser Datei findet Ihr den gesamten Code welcher mit Hilfe von xslt die Transformation durchführt, und die ganze Transformation erweitert.
Weiterhin wichtig ist eine spezielle xslt-Datei welche mitgeliefert wird, im Source Ordner:
Das ist eine stark angepasste xslt-Datei (im Vergleich zu der Standard-Sharepoint Datei), welche es ermöglicht ein WordML-Dokument fast 1zu1 in HTML anzuzeigen....und mit Hilfe der C#-Datei funktioniert das wirklich ausgesprochen gut.
In einem nächsten Post zeige ich euch, wie ich diese Codedatei angepasst habe, um mir daraus einen sehr umfangreichen Docx2Html-Transformator zu schrieben....also stay tuned :)
da ich letztens vor der Aufgabe stand, Word2010 Dokumente nach HTML zu konvertieren...musste ich mich erstmal auf eine Reise durch das Netz begeben.
Ja, es gibt die Klasse XslCompiledTransform, und mit der Docx2Html.xsl funktioniert damit auch das nötigste, aber eben nicht alles.
Zu meinem Entsetzen musste ich herausfinden, dass einige Dinge rein mit xslt garnicht umzusetzen sind.
Nun, dann habe ich Codeplex einen Besuch abgestattet....und bin auf folgendes gestoßen:
OpenXMLViewerSource
Entpackt und geöffnet ist die Program.cs für uns von Belang:
In dieser Datei findet Ihr den gesamten Code welcher mit Hilfe von xslt die Transformation durchführt, und die ganze Transformation erweitert.
Weiterhin wichtig ist eine spezielle xslt-Datei welche mitgeliefert wird, im Source Ordner:
Das ist eine stark angepasste xslt-Datei (im Vergleich zu der Standard-Sharepoint Datei), welche es ermöglicht ein WordML-Dokument fast 1zu1 in HTML anzuzeigen....und mit Hilfe der C#-Datei funktioniert das wirklich ausgesprochen gut.
In einem nächsten Post zeige ich euch, wie ich diese Codedatei angepasst habe, um mir daraus einen sehr umfangreichen Docx2Html-Transformator zu schrieben....also stay tuned :)
Dienstag, 22. Februar 2011
Forwardengineering mit LinqToSql
Robert Meyer stellt in seinem Blog vor, wie man mit LinqToSql eine Datenbank aus einem Model erzeugen kann.
Das kurze und knackige Video findet ihr hier: Forwardengineering mit LinqToSql.
Danke an Robert.
Das kurze und knackige Video findet ihr hier: Forwardengineering mit LinqToSql.
Danke an Robert.
HTML Dokumente auslesen mit dem HTML-AgilityPack
Oft ist es notwendig HTML-Dokumente jeder Art per Quellcode zu durchsuchen.
Dabei bekommt man schon von Haus aus eine Menge Werkzeuge mit auf den Weg (LinqToXML, XDocument etc..), welche allerdings nicht alle besonders Intuitiv zu benutzen, oder Tolerant im Umgang mit Reallife-Malformed Dokumenten sind (anscheinend kann man das einfach nicht verhindern)
Eine gelungene und einfache Alternative stellt hier das Html-AgilityPack von Codeplex dar. (Agilitypack bei Codeplex)
Dieses bietet mit XPath-Ausrücken die Möglichkeit, HTML-Dokumente zu durchsuchen, auch wenn diese nicht unbedingt dem Standard entsprechen...sowas soll es ja geben.
Weiterhin kann man per LinqToObjects die Dokumente mit gewohnter Linq-Syntax durchlaufen, was ich immer als sehr angenehm empfinde.
Das folgende Beispiel zeigt die allgemeine Verwendung dieser API. Eingebunden muss immer der HtmlAgilityPack-Namespace werden.
Im folgendem Beispiel wird eine HTML-Datei eingelesen, und die Parseerrors durchlaufen.
Da ich aktuell in einem Projekt Tabellenzellen auslesen musste, zeigt das zweite Beispiel, wie das geht.
Ich finde gerade die Tatsache, auch malformed Seiten parsen zu können als sehr hilfreich...vielleicht hilft es euch ja auch :)
Dabei bekommt man schon von Haus aus eine Menge Werkzeuge mit auf den Weg (LinqToXML, XDocument etc..), welche allerdings nicht alle besonders Intuitiv zu benutzen, oder Tolerant im Umgang mit Reallife-Malformed Dokumenten sind (anscheinend kann man das einfach nicht verhindern)
Eine gelungene und einfache Alternative stellt hier das Html-AgilityPack von Codeplex dar. (Agilitypack bei Codeplex)
Dieses bietet mit XPath-Ausrücken die Möglichkeit, HTML-Dokumente zu durchsuchen, auch wenn diese nicht unbedingt dem Standard entsprechen...sowas soll es ja geben.
Weiterhin kann man per LinqToObjects die Dokumente mit gewohnter Linq-Syntax durchlaufen, was ich immer als sehr angenehm empfinde.
Das folgende Beispiel zeigt die allgemeine Verwendung dieser API. Eingebunden muss immer der HtmlAgilityPack-Namespace werden.
Im folgendem Beispiel wird eine HTML-Datei eingelesen, und die Parseerrors durchlaufen.
Da ich aktuell in einem Projekt Tabellenzellen auslesen musste, zeigt das zweite Beispiel, wie das geht.
Ich finde gerade die Tatsache, auch malformed Seiten parsen zu können als sehr hilfreich...vielleicht hilft es euch ja auch :)
Abonnieren
Posts (Atom)








