1.创建word模版,使用MergeFeild绑定数据
新建一个Word文档,命名为Template.doc
注意:这里并不是输入"《”和“》”就可以了,而是必须在菜单的"插入→文档部件→域”找到MergeField并输入相应的域名
2.使用数组提供数据源
string tempPath = Server.MapPath("~/Docs/Temp/Template.doc");
string outputPath = Server.MapPath("~/Docs/Output/Template.doc");
//载入模板
var doc = new Document(tempPath);
//提供数据源
String[] fieldNames = new String[] {"UserName", "Gender", "BirthDay", "Address"};
Object[] fieldValues = new Object[] {"张三", "男", "1988-09-02", "陕西咸阳"};
//合并模版,相当于页面的渲染
doc.MailMerge.Execute(fieldNames, fieldValues);
//保存合并后的文档
doc.Save(outputPath);
3.
创建循环数据的模版,这里的循环数据类似页面的for结构,不拘泥于形式table
«TableStart:UserList»
姓名:«UserName»
«TableEnd:UserList»
4.使用DataTable提供数据源
//创建名称为UserList的DataTable
DataTable table=new DataTable("UserList");
table.Columns.Add("UserName");
table.Columns.Add("Gender");
table.Columns.Add("BirthDay");
table.Columns.Add("Address");
//----------------------------------------------------------------------------------------------------
//载入模板
var doc = new Document(tempPath);
//提供数据源
var datatable= GetDataTable();
//合并模版,相当于页面的渲染
doc.MailMerge.ExecuteWithRegions(
datatable
);
var docStream = new MemoryStream();
doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
return base.File(docStream.ToArray(), "application/msword","Template.doc");
5.绑定带有子循环数据模版
6.使用DataSet提供数据源
Document documentAspose = new Document("E:\\ApiService\\docx\\a.docx");
DocumentBuilder builder = new DocumentBuilder(documentAspose);
//用户表结构
DataTable table = new DataTable("UserList");
table.Columns.Add(new DataColumn("Id", typeof(int)));
table.Columns.Add("UserName");
var row= table.NewRow();
row["Id"] = 1;
row["UserName"] = "黄华东";
var row1 = table.NewRow();
row1["Id"] = 2;
row1["UserName"] = "黄华东B";
table.Rows.Add(row);
table.Rows.Add(row1);
//分数表结构
DataTable table2 = new DataTable("ScoreList");
table2.Columns.Add(new DataColumn("UserId", typeof(int)));
table2.Columns.Add("Name");
table2.Columns.Add("Score");
var rowt = table2.NewRow();
rowt["UserId"] = 1;
rowt["Name"] = "语文";
rowt["Score"] = "80";
var rowm = table2.NewRow();
rowm["UserId"] = 1;
rowm["Name"] = "数学";
rowm["Score"] = "90";
var rowa = table2.NewRow();
rowa["UserId"] = 2;
rowa["Name"] = "语文";
rowa["Score"] = "40";
var rowb = table2.NewRow();
rowb["UserId"] = 2;
rowb["Name"] = "数学";
rowb["Score"] = "30";
table2.Rows.Add(rowt);
table2.Rows.Add(rowm);
table2.Rows.Add(rowa);
table2.Rows.Add(rowb);
//----------------------------------------------------------------------------------------------------
//载入模板
//提供数据源
DataSet dataSet = new DataSet();
var userTable = table;
var userScoreTable = table2;
dataSet.Tables.Add(userTable);
dataSet.Tables.Add(userScoreTable);
dataSet.Relations.Add(new DataRelation("ScoreListForUser", userTable.Columns["Id"], userScoreTable.Columns["UserId"]));
//合并模版,相当于页面的渲染
documentAspose.MailMerge.ExecuteWithRegions(dataSet);
documentAspose.Save("E:\\ApiService\\docx\\huanghuadong_WTS.docx");
DocumentBuilder builder = new DocumentBuilder(documentAspose);
//用户表结构
DataTable table = new DataTable("UserList");
table.Columns.Add(new DataColumn("Id", typeof(int)));
table.Columns.Add("UserName");
var row= table.NewRow();
row["Id"] = 1;
row["UserName"] = "黄华东";
var row1 = table.NewRow();
row1["Id"] = 2;
row1["UserName"] = "黄华东B";
table.Rows.Add(row);
table.Rows.Add(row1);
//分数表结构
DataTable table2 = new DataTable("ScoreList");
table2.Columns.Add(new DataColumn("UserId", typeof(int)));
table2.Columns.Add("Name");
table2.Columns.Add("Score");
var rowt = table2.NewRow();
rowt["UserId"] = 1;
rowt["Name"] = "语文";
rowt["Score"] = "80";
var rowm = table2.NewRow();
rowm["UserId"] = 1;
rowm["Name"] = "数学";
rowm["Score"] = "90";
var rowa = table2.NewRow();
rowa["UserId"] = 2;
rowa["Name"] = "语文";
rowa["Score"] = "40";
var rowb = table2.NewRow();
rowb["UserId"] = 2;
rowb["Name"] = "数学";
rowb["Score"] = "30";
table2.Rows.Add(rowt);
table2.Rows.Add(rowm);
table2.Rows.Add(rowa);
table2.Rows.Add(rowb);
//----------------------------------------------------------------------------------------------------
//载入模板
//提供数据源
DataSet dataSet = new DataSet();
var userTable = table;
var userScoreTable = table2;
dataSet.Tables.Add(userTable);
dataSet.Tables.Add(userScoreTable);
dataSet.Relations.Add(new DataRelation("ScoreListForUser", userTable.Columns["Id"], userScoreTable.Columns["UserId"]));
//合并模版,相当于页面的渲染
documentAspose.MailMerge.ExecuteWithRegions(dataSet);
documentAspose.Save("E:\\ApiService\\docx\\huanghuadong_WTS.docx");