Microsoft w kwietniu tego roku opublikował kolejną wersję pakietu SDK do manipulacji dokumentów w formacie OpenXML. Pakiet ten ma za zadanie ułatwić tworzenie i edycję plików w formacie OpenXML z poziomu języka programowania (np. C#), automatyzując standardowe operacje jakie zwykle implementować muszą programiści tworzący aplikacje wykorzystujące ten format. Pakiet można pobrać ze stron Microsoft'u:
http://www.microsoft.com/downloads/details.aspx?FamilyID=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en.
Gdzie szukać informacji na temat Open XML i pakietu SDK?
Pierwszy program ("Hello Word" w OpenXML)
Do projektu należy dodać następujące referencje:
- DocumentFormat.OpenXml
- WindowsBase
W kodzie dołączamy następujące przestrzenie nazw:
- DocumentFormat.OpenXml;
- DocumentFormat.OpenXml.Packaging;
- DocumentFormat.OpenXml.Wordprocessing;
Teraz funkcja realizująca proste "Hello World" w OpenXML:
private void HelloWorld(string documentFileName)
{
// Create a Wordprocessing document.
using (WordprocessingDocument myDoc = WordprocessingDocument.Create(documentFileName, WordprocessingDocumentType.Document))
{
// Add a new main document part.
MainDocumentPart mainPart = myDoc.AddMainDocumentPart();
//Create Document tree for simple document.
mainPart.Document = new Document();
//Create Body (this element contains other elements that we want to include
Body body = new Body();
//Create paragraph
Paragraph paragraph = new Paragraph();
Run run_paragraph = new Run();
// we want to put that text into the output document
Text text_paragraph = new Text("Hello World!");
//Append elements appropriately.
run_paragraph.Append(text_paragraph);
paragraph.Append(run_paragraph);
body.Append(paragraph);
mainPart.Document.Append(body);
// Save changes to the main document part.
mainPart.Document.Save();
}
}
Powyższa funkcja tworzy dokument w pliku podanym przez użytkownika. Do dokumentu dodany jest paragraf który zawiera tekst "Hello World!". W ostatnim kroku dokument jest zapisywany.
A jak tą funkcję wykorzystać? Poniższy przykład pyta użytkownika o plik, do którego ma być zapisany tekst, wywołuje wcześniej stworzoną funkcję i otwiera przygotowany plik przy pomocy Word (lub innej ustawionej w systemie przeglądarki plików docx).
SaveFileDialog mySaveFileDialog=new SaveFileDialog();
mySaveFileDialog.Filter = "Word 2007 file (DOCX)|*.docx";
//save dialog display:
if (mySaveFileDialog.ShowDialog() == DialogResult.OK)
{
//call creation of HellowWord document
HelloWorld(mySaveFileDialog.FileName);
// let's open this deocument in Word:
Process.Start(mySaveFileDialog.FileName);
}
Podsumowanie
Na pierwszy rzut oka, pakiet ten oferuje bardzo wygodną możliwość manipulacji plikami zgodnymi z OpenXML. Postaram się w przyszłych postach opisać bardziej zaawansowane jego możliwości.
Czytaj dalej: "Style w Open XML SDK"
OdpowiedzUsuńCzytaj więcej tutaj: Tabele w Open XML Format SDK (DOCX) (czyli przygotowujemy tabliczkę mnożenia dla Workd 2007)
OdpowiedzUsuńJak można dołaczyć w Open XML tampalte do documentu?
OdpowiedzUsuńStandardowo robi sie tak:
/////////
Word._Application oWord = new Word.ApplicationClass();
Word._Document oDocument = new Word.DocumentClass();
//making the application visible
oWord.Visible = false;
//object oTemplate
Object oTemplate = "D:\\dot\\Plan.dot";
//add tempalate too document
oDocument = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
//////
A jak zrobić coś takiego w OpenXML?
Dzeki.
Witam, jeszcze szablonami się nie zajmowałem, w chwili obecnej niestety nie pomogę :(
OdpowiedzUsuńJak skonwertować szablon na dokument używając Open XML:
OdpowiedzUsuńhttp://www.notesfor.net/post/2009/05/27/Convert-dotx-to-docx.aspx
Pozdrawiam FoEn
Gdzie mozna znalezc opis hierarchii obiektow Spreadsheet? workbook, workbookpart, sheet, sheets, worksheet, worksheetpart(!) .. i wymieklem :) wujek google wyjatkowo nielaskawy
OdpowiedzUsuńPrzyznam, że jeszcze Excelem się jeszcze nie zajmowałem, więc nie pomogę...
OdpowiedzUsuń