Untuk membuat Word dengan Open XML, sebelumnya instal-lah OpenXML SDK ny terlebih dahulu..
Bagi yg ingin menginstall OpenXML SDK ini, dapat di dapat di :
\\storage\binus\Syahdan\IT\upload\OpenXML\OpenXMLSDKv2.msi
atau jika ternyata installer yg saya upload ternyata sudah dihapus, dapat di download di sini :
http://www.microsoft.com/download/en/details.aspx?id=5124
Setelah terinstall, kopi DocumentFormat.OpenXml.dll yg berada di lokasi file tempat install :
C:\Program Files\Open XML SDK\V2.0\lib\
atau
[path install]\Open XML SDK\V2.0\lib\
dan Paste lah dll tersebut ke dalam Folder Bin aplikasi anda..
dan klik kanan Reference, untuk menambahkan Reference baru..
Browse lah k file DocumentFormat.OpenXml.dll tersebut..
Jangan lupa menambahkan WindowsBase.dll
Buat lah sebuah tombol di aplikasi anda..
Lalu di fungsi OnClick nya, kita masukkan kodingan kita
Pertama kita siapkan nama file yg akan dibuat, beserta Path tempat file akan disimpan terlebih dahulu..
//Masukkan Path folder yang ingin di-save & nama File String SaveFolderPath = Server.MapPath("~") + "Temp\\";String namaFile = "WordTest.docx";
Lalu kita buat MainDocument nya..
WordprocessingDocument document = WordprocessingDocument.Create(SaveFolderPath + namaFile, WordprocessingDocumentType.Document); MainDocumentPart mainDocumentPart = document.AddMainDocumentPart(); mainDocumentPart.Document = new Document();
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"> . . . </w:wordDocument>
Lalu kita buat bagian Body nya..
Body documentBody = new Body();
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"> <w:body> . . . </w:body> </w:wordDocument>
Masih ingatkan? di OpenXML Word #1, saya sudah menjelaskan mengenai Paragraph, Run, & Text..
Jika kita ingin membuat dan memasukkan Text "Hello World", Text tersebut harus dimasukkan ke dalam Run.. Dan Run tersebut harus dimasukkan ke dalam Paragraph..
Jadi seperti ini..
<w:p> <w:r> <w:t>Hello, World!</w:t> </w:r> </w:p>
Mari kita masukkan ke dalam kodingan, jadinya seperti ini :
Paragraph paragraph1 = new Paragraph(); Run run1 = new Run(); Text text1 = new Text { Text = "Hello, World!" }; run1.Append(text1); paragraph1.Append(run1);
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"> <w:body> <w:p> <w:r> <w:t>Hello, World.</w:t> </w:r> </w:p> </w:body> </w:wordDocument>
Lalu kita harus meng-'append' Text ke dalam Run.. dan meng-'append' Run ke dalam Paragraph..
Seperti di bawah ini :
run1.Append(text1); paragraph1.Append(run1);
Terakhir, kita men-'append' Paragraph tersebut ke dalam Body yg telah kita buat tadi.. Dan kita Close..
Seperti di bawah ini :
documentBody.Append(paragraph1); mainDocumentPart.Document.Append(documentBody); document.MainDocumentPart.Document.Save(); document.Close(); document.Dispose();
OpenXML akan langsung secara otomatis men-save file yg kita buat, apabila kita sudah men-close Document nya..
Hasil keseluruhan tampak seperti ini :
protected void btnPrint_Click(object sender, EventArgs e) { //Masukkan Path folder yang ingin di-save & nama File String SaveFolderPath = Server.MapPath("~") + "Temp\\"; String namaFile = "WordTest.docx"; //Kita buat Document Word nya dengan OpenXML WordprocessingDocument document = WordprocessingDocument.Create(SaveFolderPath + namaFile, WordprocessingDocumentType.Document); MainDocumentPart mainDocumentPart = document.AddMainDocumentPart(); mainDocumentPart.Document = new Document(); Body documentBody = new Body(); Paragraph paragraph1 = new Paragraph(); Run run1 = new Run(); Text text1 = new Text { Text = "Hello, World!" }; run1.Append(text1); paragraph1.Append(run1); documentBody.Append(paragraph1); mainDocumentPart.Document.Append(documentBody); document.MainDocumentPart.Document.Save(); document.Close(); document.Dispose(); //Memprint nya keluar Response.Clear(); Response.AddHeader("content-disposition", "attachment;filename=" + namaFile); Response.Charset = ""; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; Response.WriteFile(SaveFolderPath + namaFile); Response.End();
Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
MIME di atas adalah tipe file .docx..
Gunakan MIME yg berbeda untuk men-save file .doc, atau excel atau PowerPoint..)
Selamat mencoba.. ^^ Berikut ScreenShot nya..