有關使用 Aspose.Words for .NET來動態的生成word文檔中的數據表
1、概述
最近項目中有一個這樣的需求:導出word文檔,要求這個文檔的格式不是固定的,用户可以隨便的調整,導出內容中的數據表格列是動態的,例如要求導出姓名和性別,你就要導出這兩列的數據,而且這個文檔不是導出來之後再調整而是導出來後已經是調整過了的。看到這裏,您也許馬上想到用模板導出!而且中自帶有這個組件:,暫且可以滿足需求吧。但這個組件也是有侷限性的,例如客户端必須裝office組件,而且編碼複雜度高。最麻煩的需求是後面那個----動態的表格列頭!下面就介紹如何使用 s for 來動態的生成word文檔中的數據表格。
2、正文
s, 是Aspose“家族類庫”之一。除這個以外,還有其他許多厲害的類庫例如(操作PDF文件的類庫)、h(操作 Flash文件的類庫)、rt(操作報表的類庫)等等,大家有興趣的可以上官方網研究下。這些類庫都包含兩種語言,一種是java ,另一種是.這裏主要是介紹s for 。s for 功能非常強大,您不需要安裝office組件,都可以用這個來生成word文檔。s支持 DOC,DOCX,OOXML,RTF格式,HTML格式,OpenDocument格式,PDF格式,和其他格式 。從下面圖中,大家可以更加詳細的瞭解s的架構。有一點忘了提,這套類庫是收費的,在本文後面我會提供一個破解版的下載地址給大家的。
在介紹如何動態的生成的表格之前,我們看看這個類庫是如何根據模板來生成值的:
首先,我們來建立一個 word模板: 。在文檔中需要生成的數據地方建立一個書籤,如圖:
在這裏大家可以看到,我們主要是通過BookMark來操作,做為動態的數據的'源。
下面我們來看看具體是怎麼實現的:
複製代碼 代碼如下:
string tmppath = Server.MapPath("~/");
Document doc = new Document(tmppath); //載入模板
if (marks["name"] != null)
{
Bookmark mark = marks["name"];
= "張三公司";
}
("", , InWord, Response); //保存為doc,並打開
是不是很簡單?好了,下面我們來看看文章開頭所講的如何動態生成word表格。
s對word文檔對象中的操作。在生成表格上有點類似二維數組。還記得需求説的“表格列數由用户控制嗎”,所以我們要在模板上定義一個含有表頭的表格,這裏要畫出您數據表中可以顯示的所有列頭,這樣做主要是考慮到用户可以自己去減少不需要顯示列頭。這裏要注意,書籤和列頭文字的順序不能顛倒,大家看下面代碼就知道了。如下圖:
灰色的部分就是bookmark了。s生成表格的原理就如同一個二維數組,也就是一個個單元格的去生成。我們來看看代碼部分是如何實現的:
複製代碼 代碼如下:
DocumentBuilder builder = new DocumentBuilder(doc);
DataTable products = ata(); //數據源
int count = 0;
//記錄要顯示多少列
for (var i = 0; i < t; i++)
{
if (marks[mns[i]()] != null)
{
Bookmark mark = marks[mns[i]()];
= "";
count++;
}
}
listcolumn = new (count);
for (var i = 0; i < count; i++)
{
ToCell(0, 0, i, 0); //移動單元格
if (Type == markStart)
{
((entNode as BookmarkStart));
}
}
double width = h;//獲取單元格寬度
ToBookmark("table"); //開始添加值
for (var m = 0; m < t; m++)
{
for (var i = 0; i < t; i++)
{
rtCell(); // 添加一個單元格
Style = le;
r = k;
h = width;
icalMerge = ;
e([m][listcolumn[i]]ring());
}
ow();
}
marks["table"] = ""; // 清掉標示
("", , InWord, onse);
我們來看看最後生成的效果:
到這裏我們這一部分的功能就已經全部完成了。
也許這種方法並不是最好,如果朋友們有興趣不妨研究研究,大家一起交流下。
-
電腦-word不讓網址自動變鏈接
word不讓網址自動變鏈接Word中的自動套用格式,確實給我們帶來了很大的方便,但有時也挺煩人的,在不該用的時候它也總是固執地套用。比如有時為了文檔外觀上的考慮,不想讓Word自動將網址、E-mail地址等變成帶下劃線的鏈接方式,可在“自動-自動更正選項”對話框中,點擊...
-
excel單元格中怎麼設置進度條/柱形圖來顯示百分比的方法
直奔主題吧,對比下面兩幅圖中紅色方框裏的數據,哪一種更讓你一目瞭然呢,很顯然,是帶有柱狀進度條的那一幅可以一下子看出各行所佔的比例等。下面就為大家介紹在excel單元格中怎麼設置以進度條/柱形圖來顯示百分比方法來看看吧!方法/步驟我們先來觀察一下最終效果圖,...
-
體育部部長ppt競選稿錦集5篇
體育部部長ppt競選稿篇1尊敬的校領導.老師,親愛的同學們:大家下午好!很高興有這樣的一個機會參加學生會的競選!我叫向洪昆,來自0812班,我是一個活潑開朗的男孩,今天我很榮幸的站在這裏表達自己由來以久的願望。我競選體育部部長。我在這裏鄭重的承諾:我將盡全力完成...
-
做ppt心得體會(精選6篇)
從某件事情上得到收穫以後,常常可以將它們寫成一篇心得體會,從而不斷地豐富我們的思想。那麼要如何寫呢?以下是小編幫大家整理的做ppt心得體會,歡迎大家分享。做ppt心得體會篇1PPT作為一種電教手段已經盛行多年。在培訓前,我自以為PPT技能掌握的還可以了,不就是動感...
相關文章
- Introduce two famous sport star英語作文
- aspose.words解決實現文檔格的中創word方法
- Word Password Recovery破解密碼的方法
- Efforts Urged to Improve Womens Reproductive Health英語閲讀
- Diaspora Finance Powers Global Development美文欣賞
- Some words for this special occasion英文美文欣賞
- A Letter to the Editor of a Newspaper英語四級作文
- 英語作文推薦:The Rewards of the Professions
- whats your plan for dragon boat festival英語作文
- MySQL安裝時出現current root password的解決方法