SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Zentrale 
Dokumentengenerierung 
mit dem Open XML SDK 
André Krämer 
Softwareentwickler, Trainer, Berater
Video Auszeichnungen Trainings Zertifizierungen
Herausforderung 
• Unternehmen erzeugen täglich 
individualisierte elektronische 
Dokumente in hoher Stückzahl 
• Angebote 
• Rechnungen 
• Teilnehmerzertifikate 
• Einladungsschreiben 
• ….
Lösungsansatz: Manuelles Erstellen 
• Zeitaufwändig 
• Mitarbeiter stehen in dieser Zeit nicht für wichtigere Aufgaben zur 
Verfügung 
• Fehleranfällig
Lösungsansatz: Word Automatisierung 
• Sehr beliebt Ende der 90er 
• Setzt ein installiertes Word voraus 
• Scheidet auf dem Server aus 
• Anwender benötigt spezielle Word- Version 
• Läuft selten stabil
Office Open XML 
• Offener Standard (ECMA-376) seit 2006 
• Word, Excel, PowerPoint 
• WordProcessingML 
• SpreadsheetML 
• PresentationML 
• De facto Standard für Austauschformate
Office Open XML 
• Zip Container 
• Enthält XML und binäre Inhalte in einer Ordner-Struktur
Demo
Aufbau Open XML 
ZIP Container 
[Content_ 
Types] 
docProps 
app/core 
Title, Author, 
Application 
word 
document 
w:document 
w:body 
w:run 
styles 
Styles 
Tab positions 
rels 
rels
Zugriff auf das Dokument per Quellcode 
(lesend) 
• Entpacken der Datei 
• Entsprechende XML Datei in XmlDocument laden 
• Passende Knoten über XPath-Queries suchen.
Zugriff auf das Dokument per Quellcode 
(lesend) 
• Entpacken der Datei 
• Entsprechende XML Datei in XmlDocument laden 
• Passende Knoten über XPath-Queries suchen.
Lösungsansatz: Microsoft Open XML SDK 
• Wrapper um das ECMA-376 Office Open XML Dateiformat 
• Liest und schreibt .docx 
• Benötigt kein installiertes Word 
• Wird auf dem Server unterstützt
Demo 
Open XML SDK Productivity Tool 
(Quellcode: Siehe http://andrekraemer.de)
Demo 
Dokumenteigenschaften auslesen 
(Quellcode: Siehe http://andrekraemer.de)
Notwendige Referenzen
string fileName = @"C:DemoDocsHallo Basta.docx"; 
using (var document = WordprocessingDocument.Open(fileName, false)) 
{ 
string author = document.PackageProperties.Creator; 
Console.WriteLine(author); 
}
Demo 
Neues Dokument erzeugen 
(Quellcode: Siehe http://andrekraemer.de)
Demo 
Text eines Dokuments auslesen 
(Quellcode: Siehe http://andrekraemer.de)
Demo 
Teilnehmerliste 
(Quellcode: Siehe http://andrekraemer.de)
Demo 
Teilnehmerliste (Verbessert) 
(Quellcode: Siehe http://andrekraemer.de)
Demo 
Schulungszertifikat 
(Quellcode: Siehe http://andrekraemer.de)
Fazit
Open XML SDK 
• Manipulation von Dokumenten ohne installiertes Word möglich 
• Sehr performant (Dokumente mit mehreren 100 Seiten in weniger 
als 5 Minuten) 
• Gut Dokumentiert 
Open XML SDK 
• Reiner Wrapper um das Dateiformat, nicht um die Word 
Oberfläche! 
• Der Entwickler benötigt Wissen über die internen Word Strukturen 
• Auch „einfache“ Aufgaben sind in der Umsetzung sehr aufwändig 
• Defensive Programmierung ist wichtig!
Grenzen des Open XML SDK 
• Zugriff auf das Word UI 
• Konvertierung von Dokumenten (PDF, DOC, RTF, HTML) 
• Extrahieren von Bildern 
• Automatische Aktualisierung von Feldern (z. B. 
Fußnotennummerierung) 
• Drucken
Alternative
Vielen Dank! 
Homepage 
Blog 
Xing 
Facebook 
Twitter 
Google+ 
andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog 
33 
Schulung und Beratung mit den Schwerpunkten: 
• Windows 8 und Windows Phone Apps 
• ASP.NET MVC, Web API & JavaScript 
• Team Foundation Server / ALM 
• Automatische Dokumentengenerierung mit TX Text Control 
• Performance- & Memory Analysen 
• Softwarearchitektur

Weitere ähnliche Inhalte

Andere mochten auch

Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)André Krämer
 
Gurtel golfos (forges)
Gurtel golfos (forges)Gurtel golfos (forges)
Gurtel golfos (forges)Pere Eurotopia
 
Facts zu bügeln
Facts zu bügelnFacts zu bügeln
Facts zu bügelnKhoa Nguyen
 
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)WMiE
 
Evaluacion sistema electrico venezolano (Jose Aguilar)
Evaluacion sistema electrico venezolano (Jose Aguilar)Evaluacion sistema electrico venezolano (Jose Aguilar)
Evaluacion sistema electrico venezolano (Jose Aguilar)Nelson Hernandez
 
Descarga appserv
Descarga appservDescarga appserv
Descarga appservHeli Lazaro
 
Wirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOL
Wirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOLWirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOL
Wirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOLeckhartriehl
 
masyarakat agraria di China
masyarakat agraria di Chinamasyarakat agraria di China
masyarakat agraria di ChinaQaseh Nur Husna
 
R E S U E L T A
R E S U E L T AR E S U E L T A
R E S U E L T Apepe soto
 
2013 Muttertag in der Softball-Bundesliga
2013 Muttertag in der Softball-Bundesliga2013 Muttertag in der Softball-Bundesliga
2013 Muttertag in der Softball-BundesligaRaoul Machalet
 
Presentacion libros didácticos
Presentacion libros didácticosPresentacion libros didácticos
Presentacion libros didácticosGonzalo Abio
 

Andere mochten auch (20)

Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
 
Gurtel golfos (forges)
Gurtel golfos (forges)Gurtel golfos (forges)
Gurtel golfos (forges)
 
Conocimiento abierto y universidad
Conocimiento abierto y universidadConocimiento abierto y universidad
Conocimiento abierto y universidad
 
Testppt
TestpptTestppt
Testppt
 
Facts zu bügeln
Facts zu bügelnFacts zu bügeln
Facts zu bügeln
 
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
 
Evaluacion sistema electrico venezolano (Jose Aguilar)
Evaluacion sistema electrico venezolano (Jose Aguilar)Evaluacion sistema electrico venezolano (Jose Aguilar)
Evaluacion sistema electrico venezolano (Jose Aguilar)
 
Descarga appserv
Descarga appservDescarga appserv
Descarga appserv
 
Innovación en la empresa
Innovación en la empresa Innovación en la empresa
Innovación en la empresa
 
Wirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOL
Wirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOLWirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOL
Wirtschaft der Fülle mit dem Ökosozialen Kreislauf von Planet SOL
 
masyarakat agraria di China
masyarakat agraria di Chinamasyarakat agraria di China
masyarakat agraria di China
 
R E S U E L T A
R E S U E L T AR E S U E L T A
R E S U E L T A
 
Wen X, Platzl
Wen X, PlatzlWen X, Platzl
Wen X, Platzl
 
Ciel France
Ciel FranceCiel France
Ciel France
 
2013 Muttertag in der Softball-Bundesliga
2013 Muttertag in der Softball-Bundesliga2013 Muttertag in der Softball-Bundesliga
2013 Muttertag in der Softball-Bundesliga
 
KWG Geschäftsbericht 2005
KWG Geschäftsbericht 2005KWG Geschäftsbericht 2005
KWG Geschäftsbericht 2005
 
Sistema
SistemaSistema
Sistema
 
John williams cavatina
John williams cavatinaJohn williams cavatina
John williams cavatina
 
Presentacion libros didácticos
Presentacion libros didácticosPresentacion libros didácticos
Presentacion libros didácticos
 
Pertemuan 9 - Wireless
Pertemuan 9 - WirelessPertemuan 9 - Wireless
Pertemuan 9 - Wireless
 

Ähnlich wie Zentrale Dokumentengenerierung mit dem Open XML SDK

Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabeMichael Konzett
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzVerein FM Konferenz
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Javacamunda services GmbH
 
Javascript done right
Javascript done rightJavascript done right
Javascript done rightDirk Ginader
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittSDL Language Technologies
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerStefan Oehrli
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
FileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick Risch
FileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick RischFileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick Risch
FileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick RischVerein FM Konferenz
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungFrank Schmittlein
 
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichFMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichVerein FM Konferenz
 
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...Verein FM Konferenz
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingVerein FM Konferenz
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenRalf Eggert
 
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico BuschFMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico BuschVerein FM Konferenz
 
openFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erstopenFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erstJeongHo Park
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenSebastian Hempel
 
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischFMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischVerein FM Konferenz
 

Ähnlich wie Zentrale Dokumentengenerierung mit dem Open XML SDK (20)

Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabe
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian Schmitz
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste Schritt
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
FileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick Risch
FileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick RischFileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick Risch
FileMaker 13 - Neue Befehle und mehr Möglichkeiten by Patrick Risch
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
 
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichFMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
 
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam Augusting
 
Oracle und Docker
Oracle und DockerOracle und Docker
Oracle und Docker
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
 
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico BuschFMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
 
openFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erstopenFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erst
 
PHP mit Paul Bocuse
PHP mit Paul BocusePHP mit Paul Bocuse
PHP mit Paul Bocuse
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machen
 
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischFMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
 

Mehr von André Krämer

Xamarin.Forms App in einer Stunde
Xamarin.Forms App in einer StundeXamarin.Forms App in einer Stunde
Xamarin.Forms App in einer StundeAndré Krämer
 
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...André Krämer
 
Codewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenCodewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenAndré Krämer
 
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018André Krämer
 
Xamarin.Forms Workshop, DDC 2018
Xamarin.Forms Workshop, DDC 2018Xamarin.Forms Workshop, DDC 2018
Xamarin.Forms Workshop, DDC 2018André Krämer
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndré Krämer
 
Xamarin ohne Mac und Android SDK? - So weit kommen Sie mit dem Xamarin Live P...
Xamarin ohne Mac und Android SDK?- So weit kommen Sie mit dem Xamarin Live P...Xamarin ohne Mac und Android SDK?- So weit kommen Sie mit dem Xamarin Live P...
Xamarin ohne Mac und Android SDK? - So weit kommen Sie mit dem Xamarin Live P...André Krämer
 
Typische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
Typische Sicherheitslücken in ASP.NET MVC und Web API AnwendungenTypische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
Typische Sicherheitslücken in ASP.NET MVC und Web API AnwendungenAndré Krämer
 
Lokale Datenhaltung in Xamarin-Apps
Lokale Datenhaltung in Xamarin-AppsLokale Datenhaltung in Xamarin-Apps
Lokale Datenhaltung in Xamarin-AppsAndré Krämer
 
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)André Krämer
 
Performance trotz Entity Framwork
Performance trotz Entity FramworkPerformance trotz Entity Framwork
Performance trotz Entity FramworkAndré Krämer
 

Mehr von André Krämer (11)

Xamarin.Forms App in einer Stunde
Xamarin.Forms App in einer StundeXamarin.Forms App in einer Stunde
Xamarin.Forms App in einer Stunde
 
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
 
Codewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenCodewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximieren
 
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
 
Xamarin.Forms Workshop, DDC 2018
Xamarin.Forms Workshop, DDC 2018Xamarin.Forms Workshop, DDC 2018
Xamarin.Forms Workshop, DDC 2018
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickeln
 
Xamarin ohne Mac und Android SDK? - So weit kommen Sie mit dem Xamarin Live P...
Xamarin ohne Mac und Android SDK?- So weit kommen Sie mit dem Xamarin Live P...Xamarin ohne Mac und Android SDK?- So weit kommen Sie mit dem Xamarin Live P...
Xamarin ohne Mac und Android SDK? - So weit kommen Sie mit dem Xamarin Live P...
 
Typische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
Typische Sicherheitslücken in ASP.NET MVC und Web API AnwendungenTypische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
Typische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
 
Lokale Datenhaltung in Xamarin-Apps
Lokale Datenhaltung in Xamarin-AppsLokale Datenhaltung in Xamarin-Apps
Lokale Datenhaltung in Xamarin-Apps
 
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
 
Performance trotz Entity Framwork
Performance trotz Entity FramworkPerformance trotz Entity Framwork
Performance trotz Entity Framwork
 

Zentrale Dokumentengenerierung mit dem Open XML SDK

  • 1. Zentrale Dokumentengenerierung mit dem Open XML SDK André Krämer Softwareentwickler, Trainer, Berater
  • 3. Herausforderung • Unternehmen erzeugen täglich individualisierte elektronische Dokumente in hoher Stückzahl • Angebote • Rechnungen • Teilnehmerzertifikate • Einladungsschreiben • ….
  • 4. Lösungsansatz: Manuelles Erstellen • Zeitaufwändig • Mitarbeiter stehen in dieser Zeit nicht für wichtigere Aufgaben zur Verfügung • Fehleranfällig
  • 5. Lösungsansatz: Word Automatisierung • Sehr beliebt Ende der 90er • Setzt ein installiertes Word voraus • Scheidet auf dem Server aus • Anwender benötigt spezielle Word- Version • Läuft selten stabil
  • 6.
  • 7. Office Open XML • Offener Standard (ECMA-376) seit 2006 • Word, Excel, PowerPoint • WordProcessingML • SpreadsheetML • PresentationML • De facto Standard für Austauschformate
  • 8. Office Open XML • Zip Container • Enthält XML und binäre Inhalte in einer Ordner-Struktur
  • 10. Aufbau Open XML ZIP Container [Content_ Types] docProps app/core Title, Author, Application word document w:document w:body w:run styles Styles Tab positions rels rels
  • 11.
  • 12. Zugriff auf das Dokument per Quellcode (lesend) • Entpacken der Datei • Entsprechende XML Datei in XmlDocument laden • Passende Knoten über XPath-Queries suchen.
  • 13. Zugriff auf das Dokument per Quellcode (lesend) • Entpacken der Datei • Entsprechende XML Datei in XmlDocument laden • Passende Knoten über XPath-Queries suchen.
  • 14. Lösungsansatz: Microsoft Open XML SDK • Wrapper um das ECMA-376 Office Open XML Dateiformat • Liest und schreibt .docx • Benötigt kein installiertes Word • Wird auf dem Server unterstützt
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Demo Open XML SDK Productivity Tool (Quellcode: Siehe http://andrekraemer.de)
  • 20. Demo Dokumenteigenschaften auslesen (Quellcode: Siehe http://andrekraemer.de)
  • 22. string fileName = @"C:DemoDocsHallo Basta.docx"; using (var document = WordprocessingDocument.Open(fileName, false)) { string author = document.PackageProperties.Creator; Console.WriteLine(author); }
  • 23. Demo Neues Dokument erzeugen (Quellcode: Siehe http://andrekraemer.de)
  • 24. Demo Text eines Dokuments auslesen (Quellcode: Siehe http://andrekraemer.de)
  • 25. Demo Teilnehmerliste (Quellcode: Siehe http://andrekraemer.de)
  • 26. Demo Teilnehmerliste (Verbessert) (Quellcode: Siehe http://andrekraemer.de)
  • 27. Demo Schulungszertifikat (Quellcode: Siehe http://andrekraemer.de)
  • 28. Fazit
  • 29. Open XML SDK • Manipulation von Dokumenten ohne installiertes Word möglich • Sehr performant (Dokumente mit mehreren 100 Seiten in weniger als 5 Minuten) • Gut Dokumentiert 
  • 30. Open XML SDK • Reiner Wrapper um das Dateiformat, nicht um die Word Oberfläche! • Der Entwickler benötigt Wissen über die internen Word Strukturen • Auch „einfache“ Aufgaben sind in der Umsetzung sehr aufwändig • Defensive Programmierung ist wichtig!
  • 31. Grenzen des Open XML SDK • Zugriff auf das Word UI • Konvertierung von Dokumenten (PDF, DOC, RTF, HTML) • Extrahieren von Bildern • Automatische Aktualisierung von Feldern (z. B. Fußnotennummerierung) • Drucken
  • 33. Vielen Dank! Homepage Blog Xing Facebook Twitter Google+ andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog 33 Schulung und Beratung mit den Schwerpunkten: • Windows 8 und Windows Phone Apps • ASP.NET MVC, Web API & JavaScript • Team Foundation Server / ALM • Automatische Dokumentengenerierung mit TX Text Control • Performance- & Memory Analysen • Softwarearchitektur