1. 程式人生 > >實現動態資料生成Word文件並儲存

實現動態資料生成Word文件並儲存

        最近在做人事系統,遇到了一個信函列印的的問題。需求是:給一個現成格式的Word模板,在模板中寫入你要寫的資訊,然後儲存。網上的方法大多數都是從一個GridView或表中獲得資料後向Word中新增一個表格。但不方便實現下面的效果。

        

        我們使用Word模板來實現,方法如下:
          1、首先需要向工程中的“引用”加入Word類庫的引用(如下圖)。我是Office 2003。其他版本可能略有不同。在COM裡面。

                

        2、用Word設計一個模板文件(字尾名*.dot)。

            

        3、向模板中的需要顯示動態內容的地方新增書籤。具體方法是。游標落到欲插入內容的地方,選擇選單欄上的“插入”——〉“書籤”。注意:在“備註:”的後面新增一個書籤,名字叫"beizhu"。書籤名字不能以數字開頭。

          

        4、完成全部書籤的新增,依次應該是:

          

        5、儲存這個已完成的模板到任意路徑,例如 X:/template.dot
        6、在工程的窗體的類中新增引用的名稱空間

          using Word;

        7、為了省事,直接在窗體的Load事件中加入以下程式碼。

<pre name="code" class="csharp">//**********************************************
//來自部落格http://blog.csdn.net/fujie724
//**********************************************
object oMissing = System.Reflection.Missing.Value;
//建立一個Word應用程式例項
Word._Application oWord= new Word.Application();
//設定為不可見
oWord.Visible = false;  
//模板檔案地址,這裡假設在X盤根目錄
object oTemplate = "X://template.dot";
//以模板為基礎生成文件
Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
//宣告書籤陣列
object[] oBookMark = new object[5];
//賦值書籤名
oBookMark[0] = "beizhu";
oBookMark[1] = "name";
oBookMark[2] = "sex";
oBookMark[3] = "birthday";
oBookMark[4] = "hometown";
//賦值任意資料到書籤的位置
oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = "使用模板實現Word生成";
oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = "李四";
oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = "女";
oDoc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = "1987.06.07";
oDoc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = "賀州";
//彈出儲存檔案對話方塊,儲存生成的Word
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Word Document(*.doc)|*.doc";
sfd.DefaultExt = "Word Document(*.doc)|*.doc";
if (sfd.ShowDialog() == DialogResult.OK)
{
   object filename = sfd.FileName;
                
   oDoc.SaveAs(ref filename, ref oMissing, ref oMissing, ref oMissing, 
   ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
   ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
   ref oMissing, ref oMissing);
   oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
   //關閉word
   oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
}


        8、執行後直接彈出儲存檔案對話方塊(因為寫在了Load事件裡)。儲存為Doc文件,打開發現效果如下:

          

        至此,大功告成,文件中的內容正是我們所設定的。一個簡單而又快捷的固定格式Word文件輸出就完成了。
 


希望對需要的朋友有幫助