Aspose.Words使用word模板中的書簽/域插入信息並導出


首先我大概敘述一下我對這個東西的理解畢竟我也只是記錄一下,確保下次自己在看的時候可以看懂,
所以寫的比較詳細且傻瓜首先這個word文檔不是憑空生成的,是你事先就把文檔創建好的,里邊的內容,
格式都是實現創建好的只留下一些需要插入數據的地方,當然這些需要插入數據的地方也不是空着的,
是用的書簽,接下來看圖
tip:圖片點擊可以放大看原圖


 

 
        

 這就是我預先做好的一個簡單的文檔,這段教程中只需要看前兩行,第三行是我用來添加多行數據的,暫且不看

你以為第二行是空的,那就錯了,我們點擊插入,點書簽,可以看到這個框

 

 

 可以看到里面已經有了好幾個書簽,分別對應我上邊寫的的id,姓名那些,你可以選中一個書簽點擊定位,光標就可以跳到該書簽的位置,注意,一個位置只放一個書簽。

這時候我的六個空白格里是有了六個書簽的,這時候把該模板放到你的項目文件夾里,接下來就開始操作項目

右鍵你的項目-管理NuGet程序包,搜索Aspose.Words點擊下載安裝,提示不用管,下載就行了
接着引入命名空間,我用的C#:
using Aspose.Words;
然后看代碼:
看不懂的話可以私信問我

     //前台下載按鈕對應的方法名 protected void SaveDoc(object sender,EventArgs e) { //這里是預先定義好的模板的路徑
            string docpath = HttpContext.Current.Server.MapPath("/信息表模板.doc"); //操作該路徑下的文件即模板
            Document doc = new Document(docpath); DocumentBuilder builder = new DocumentBuilder(doc); BookMarkReplace(doc, builder, "userid", userid.Value.Trim()) ; BookMarkReplace(doc, builder, "username", username.Value.Trim()); BookMarkReplace(doc, builder, "usersex", usersex.Value.Trim()); BookMarkReplace(doc, builder, "userage", userage.Value.Trim()); BookMarkReplace(doc, builder, "userheight", userheight.Value.Trim()); BookMarkReplace(doc, builder, "userkg", userkg.Value.Trim());//創建保存路徑文件建名字
            string mydir = Server.MapPath("/DocFile/"); //創建保存文件的默認名字
            string name = username.Value; doc.Save(mydir + name + "信息表.doc"); //跳轉到文檔,即用戶可下載文檔
            Response.Redirect("/DocFile/" + name + "信息表.doc"); } /// <summary>
        /// 封裝BookMArkReplace /// </summary>
        /// <param name="doc"></param>
        /// <param name="builder"></param>
        /// <param name="bookmark">書簽名稱</param>
        /// <param name="value">替換內容</param>
        public static void BookMarkReplace(Document doc,DocumentBuilder builder,string bookmark,string value) { //bm是文檔中書簽的內容
            var bm = doc.Range.Bookmarks[bookmark]; //不為空說明有內容,則不做操作,一般為空,除非出錯
            if (bm == null) { return; } //將書簽中的內容清空
            bm.Text = ""; //將數據插入到書簽中
 builder.MoveToBookmark(bookmark); bm.Text =value; }
 
        
 
        

BookMarkReplace是封裝好替換書簽的方法,因為有很多書簽需要替換,所以封裝一個方法可以省去很多事,
這也是面向對象的三大特性之一
然后我們簡單設計一下前端頁面,為了更直觀看到輸出的文檔,我們把前端也寫成表格的樣子,文字自己輸入
關鍵代碼如下:

 <style type="text/css"> .texts{ border:0px;
        } td{ border:1px solid blue; text-align:center;
        } tr{ height:50px;
            
        } table{ width:500px; border:3px solid red;
        }
        
    </style>
    
    <div style="height:100px;width:1055px;border:3px solid green;padding-left:40%;padding-top:30px">
        <asp:LinkButton runat="server" class="btn btn-success" OnClick="SaveDoc">下載word</asp:LinkButton>
    </div>


    <div>
        <table>
            <tbody>
                <tr>
                    <td>編號:</td>
                    <td>姓名:</td>
                    <td>性別:</td> 
                    <td>年齡:</td>
                    <td>身高:</td>
                    <td>體重:</td>
                </tr>
                <tr>
                    <td><input type="text" class="texts" placeholder="輸入編號" id="userid" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="輸入姓名" id="username" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="輸入性別" id="usersex" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="輸入年齡" id="userage" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="輸入身高" id="userheight" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="輸入體重" id="userkg" runat="server"/></td>
                </tr>
            </tbody>
        </table>
    </div>

效果如下:

 

 
        

輸入內容后點擊下載word,就會執行你寫的方法,將你輸入的每一個數據都替換你模板里的書簽

接下來自己嘗試一些輸入內容下載文檔看看能不能成功替換

演示一下效果吧

第一步:

 

 

 第二步:

 

 第三步打開下載好的文件:

 

 上邊的紅色字還有下邊的aspose水印都是aspose包自帶的,可以從網上找一些純凈的包自己導入

對了,每一次點擊下載都會在你的項目文件夾里生成一個word表,順序是
word文檔先生成在你的項目文件夾里,用戶再下載你文件夾里的內容
成功點個贊評論下啊


原創帖子,轉載請注明:https://www.cnblogs.com/ccgn/articles/16038104.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM