1. 程式人生 > >運用c# 對Word進行操作總結(一)建立Word文件

運用c# 對Word進行操作總結(一)建立Word文件

 在醫療管理系統中為儲存患者的體檢和治療記錄,方便以後的醫生或其他人檢視。當把資料儲存到資料庫中,需要新建很多的欄位,而且操作很繁瑣,於是想到網頁的資訊建立到一個word文字中,在顯示的時,可以線上開啟word,也可以把word轉換成html標籤顯示。 這樣使用word代替網頁的原因有:
  第一:網頁生成數學公式和特殊符號儲存和顯示比較麻煩(如何操作word生成數學公式,有待測試)
  第二:生成Word版的報告更容易存檔和沒有環境下的傳閱及列印
  第三:客戶直接操作Word感覺更親切,而且非常熟悉
  Word物件模型 (.Net Perspective)
  Word2007的API:

http://msdn.microsoft.com/enus/library/bb257531(v=office.12).aspx
  

五大物件
Application :代表Microsoft Word應用程式本身
  是Document和Selection的基類。通過Application的屬性和方法,我們可以控制Word的大環境。
Document :代表一個Word文件
  當你新建一個Word文件或者開啟一個已有的Word文件,你將建立一個Document物件,該物件被加入到Words Documents Collection中。擁有焦點的Document稱為ActiveDocument,可以通過Application物件的ActiveDocument屬性獲得當前文件物件
Selection :代表當前選中的區域(高亮),沒有選中區域時代表游標點
  它通常是高亮顯示的(例如,你要改變一段文字的字型,你首先得選中這段文字,那麼選中的這塊區域就是當前文件的Selection物件所包含的區域)
Bookmarks :書籤
  1>書籤一般有名字
  2>Saved with the document,且文件關閉了之後書籤繼續存在
  3>書籤通常是隱藏的,但也可以通過程式碼設定其為可見

Range :代表一塊區域,與Selection類似,不過一般不可見
  1>包含一個起始位置和一個結束位置
  2>它可以包含游標點,一段文字或者整個文件
  3>它包含空格,tab以及paragraph marks
  4>它可以是當前選中的區域,當然也可以不是當前選中區域
  5>它被動態建立
  6>當你在一個Range的末尾插入文字,這將擴充套件該Range

  word文件物件的結構圖:
  這裡寫圖片描述

關於物件的詳細使用,可以參考msdn api

例項使用  

建立Word 文件所使用的主要方法是通過微軟公司提供的Microsoft Word X Object Library,
其中X 為版本號。Word2013為15.0 , Word2010對應14.0, Word 2007 對應12.0,Word 2003 對應11.0。
通過在專案中新增該元件,即可使用微軟公司提供的方法建立相應版本的Word 文件。
在例項中我將所要生成word的格式設定為2003版本

新建一個winForm專案檔案,
Com元件中新增 Microsoft Word 12.0 Object Library,引用面板中多出Microsoft.Office.Core、Microsoft.Office.Interop.Word兩個引用。
在類檔案中新增應用如下:
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
下面從word建立、格式設定、文字新增、圖片新增、表格新增展示部分程式碼:
  
建立Word文件:

void CreateWord()
        {
            object path;//檔案路徑
            string strContent;//檔案內容
            MSWord.Application wordApp;//Word應用程式變數
            MSWord.Document wordDoc;//Word文件變數
            path = "d:\\myWord.doc";//儲存為Word2003文件
           // path = "d:\\myWord.doc";//儲存為Word2007文件
            wordApp = new MSWord.ApplicationClass();//初始化
            if (File.Exists((string)path))
            {
                File.Delete((string)path);
            }
            //由於使用的是COM 庫,因此有許多變數需要用Missing.Value 代替
            Object Nothing = Missing.Value;
            //新建一個word物件
            wordDoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
            //WdSaveDocument為Word2003文件的儲存格式(文件字尾.doc)\wdFormatDocumentDefault為Word2007的儲存格式(文件字尾.docx)
            object format = MSWord.WdSaveFormat.wdFormatDocument;
           //將wordDoc 文件物件的內容儲存為DOC 文件,並儲存到path指定的路徑
            wordDoc.SaveAs(ref path, ref format, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
            //關閉wordDoc文件
            wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
            //關閉wordApp元件物件
            wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
            Response.Write("<script>alert('" + path + ": Word文件建立完畢!');</script>");
        }