1. 程式人生 > >Aspose.Words生成word檔案

Aspose.Words生成word檔案

首先設定word模板,可以點選某個單元格插入書籤

插入方法:滑鼠點選word檔案某處,然後   插入--書籤 即可

//關鍵程式碼如下……………………

        string tmppath = Server.MapPath("~/Template.doc");

        Document doc = new Document(tmppath); //載入模板

        //使用書籤
        if (doc.Range.Bookmarks["mark"] != null)
        {
            //Bookmark mark = doc.Range.Bookmarks["mark"];//根據書籤名稱獲取書籤
            //mark.Text = "sean";
        }
        //不使用書籤  通過移動單元格 來新增值
        DocumentBuilder builder = new DocumentBuilder(doc);
        //設定單元格內容對齊方式
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
        builder.MoveToCell(0, 2, 3,0); //tableIndex,rowIndex,columnIndex,characterIndex  初始索引0
        builder.Write("chang");
        doc.Save("demo.doc", SaveFormat.Doc, SaveType.OpenInWord, Response);  //儲存為doc,並開啟
       //doc.Save(HttpContext.Current.Server.MapPath(savePath), SaveFormat.Doc);//直接儲存檔案
 
//PS:
    在實際使用過程中發現如果表格都在word模板第一頁的時候,我們可以使用通過更改moveToCell方法第一個引數tableIndex來填寫具體哪個表,但是當模板有若干頁時,
通過更改方法第一個引數值直接報錯(超出表索引)
    在網上找了半天,最終發現了一個算是很麻煩的方法:模板插入域(插入--文件部件--域--類別選擇郵件合併點選MergeField輸入名稱),然後Aspose.Words提供一個方法:
 doc.MailMerge.Execute(string[]fieldNames,object[]values) 及把模板中的域名稱以及陣列對應資料分別組合一個數組,通過該方法可以把資料插入對應域上。這個方法
適用於模板中單元格相對比較少,如果太多的話模板維護起來很麻煩。