首先我大概敘述一下我對這個東西的理解畢竟我也只是記錄一下,確保下次自己在看的時候可以看懂,
所以寫的比較詳細且傻瓜首先這個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