Aspose Word模板使用總結


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);
  //在WebForm中,保存文檔到流中,使用Response. BinaryWrite 輸出該文件
   var docStream = new MemoryStream();
  doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
  Response.ContentType = " application/msword ";
  Response.AddHeader("content-disposition", "attachment;  filename= Template.doc ");
  Response.BinaryWrite( docStream.ToArray() );
  Response.End();
 //在MVC中采用,保存文檔到流中,使用base.File輸出該文件
  var docStream = new MemoryStream();
  doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
  return base.File(docStream.ToArray(), "application/msword","Template.doc");
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提供數據源
//用戶表結構
 DataTable table = new DataTable("UserList");
 table.Columns.Add(new DataColumn("Id", typeof(int)));
 table.Columns.Add("UserName");
 table.Columns.Add("Gender");
 table.Columns.Add("BirthDay");
 table.Columns.Add("Address");
//分數表結構
 DataTable table = new DataTable("ScoreList");
 table.Columns.Add(new DataColumn("UserId", typeof(int)));
 table.Columns.Add("Name");
 table.Columns.Add("Score");
//----------------------------------------------------------------------------------------------------
//載入模板
 var doc = new Document(tempPath);
 //提供數據源
 DataSet dataSet = new DataSet();
 var userTable= GetUserDataTable();
 var userScoreTable= GetUserScoreDataTable();
 dataSet.Tables.Add(userTable);
 dataSet.Tables.Add(userScoreTable);
 dataSet.Relations.Add(new DataRelation("ScoreListForUser",userTable.Columns["Id"], userScoreTable.Columns["UserId"]));
 //合並模版,相當於頁面的渲染
  doc.MailMerge.ExecuteWithRegions( dataSet );
  var docStream = new MemoryStream();
 doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
 return base.File(docStream.ToArray(), "application/msword","Template.doc");
7.模版上使用書簽,插入標記位置
選中文檔中的文字,在菜單的"插入→書簽”指定書簽的名稱,排序依據選定為位置,添加一個新書簽。選中的文字為書簽的Text屬性,這里是為了方便查看。也可以直接插入一個書簽並 指定位置,只是不明顯。
8.在書簽位置插入另一個文檔的內容
//載入模板
 var doc = new Document(tempPath);
 var doc1 = new Document(tempPath1);//新文檔
//找到名稱為PositionFlag的書簽
 var bookmark= doc.Range.Bookmarks["PositionFlag"];
//清空書簽的文本
 bookmark.Text = "";
//使用DocumentBuilder對象插入一些文檔對象,如插入書簽,插入文本框,插入復選框,插入一個段落,插入空白頁,追加或另一個word文件的內容等。
 var builder = new DocumentBuilder(doc);
//定位到指定位置進行插入操作
 builder.MoveToBookmark("PositionFlag");
//在PositionFlag書簽對應的位置,插入另一個文檔的內容。
 InsertDocument(bookmark.BookmarkStart.ParentNode, doc1);


免責聲明!

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



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