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ńwhen use the same code fie is corrupting why??
OdpowiedzUsuńCiekawie napisane
OdpowiedzUsuńwspaniały wpis!
OdpowiedzUsuńRewelacyjny jest ten wpis
OdpowiedzUsuńCiekawy wpis
OdpowiedzUsuńInteresujący wpis
OdpowiedzUsuńTakie informacje jak te są niesamowicie wartościowe.
OdpowiedzUsuń