概念介紹
使用aspose生成word報表步驟:
提供了4種重載方法
public Document(); public Document(Stream stream); public Document(string fileName); public Document(Stream stream, LoadOptions loadOptions); public Document(string fileName, LoadOptions loadOptions);
aspose在word模板中使用了域(MergeField),一個域相當(dāng)于一個占位符。域,可以從菜單 插入->文檔部件中定位選擇。
目前有兩種情況:基本信息和列表。
基本信息:基本屬性,列表對應(yīng)循環(huán)的數(shù)據(jù)結(jié)構(gòu),如DataTable.
對于列表,使用DataTable進(jìn)行填充。
模板的制作:
表格以關(guān)鍵字TableStart開頭,TableEnd結(jié)束。關(guān)鍵字后加DataTable表名稱。e.g.TableStart:tableName
表頭中間,是具體字段的名稱。
序號 | 姓名 | 性別 | 年齡 |
<TableStart:Name><<Index>> | <<Name>> | <<Sex>> | <<Age>><<TableEnd:Name>> |
Document doc = new Document(Server.MapPath("~//templet") + "http://" + name);doc.MailMerge.ExecuteWithRegions(DataTable)
有兩種方式可以實(shí)現(xiàn):
方法一、
DocumentBuilder builder = new DocumentBuilder(doc);builder.MoveToMergeField(MergeFiled Name);builder.Write(value;
這種方式,一次填充一個數(shù)據(jù)。但一個域字段可以多次使用,并可以一次填充。
優(yōu)點(diǎn),可以靈活定制。如果要想一次替換多個域字段,稍加改動同樣可以實(shí)現(xiàn)。
DocumentBuilder builder = new DocumentBuilder(doc);while(builder.MoveToMergeField(MergeFiled Name)){ builder.Write(value;}
方法二、
doc.MailMerge.Execute(fieldNames, fieldValues);
在具體開發(fā)過程中,通常選擇Entity作為數(shù)據(jù)源。可通過反射獲取數(shù)據(jù)。
如何獲取域字段
doc.MailMerge.GetFieldNames()
方法返回的書string[]
新聞熱點(diǎn)
疑難解答