2013-02-26 95 views
1

我们有要求将Microsoft Word文档用作替换占位符的模板。它适用于简单的放置者更换。将dotx占位符替换为复杂的表格数据

但是,当我们需要添加一个占位符时,它会被表格替换为行数,这取决于从数据库中检索的数据。

目前我们正在使用C#代码,在替换到Microsoft Word模板之前生成数据。

有没有更好的方法呢?或者我们可以使用SSRS来满足这个要求吗?

最终结果应该是同一个文档,其占位符由数据库中的值替换。

回答

0

这里Data/View Separation in Word 2007 using Word XML Data Binding and OpenXML

主要描述一下XML数据在Word文档中绑定,可以将内容添加到其位于DOCX封装内分布的XML文件的Word文档。

This MSDN示例可能也有帮助。

就我个人而言,我非常喜欢这种方法,因为它使用了内置于Word中的现有技术,而不是自己解析OpenXML。

0

你可以使用:

// fill the dt DataTable from the database 
System.Data.DataTable dt = new System.Data.DataTable(); 

// just some test data 
int columns = 3; 
int rows = 3; 
for (int i = 0; i < columns; i++) 
{ 
    dt.Columns.Add(); 
} 
for (int i = 0; i < rows; i++) 
{ 
    dt.Rows.Add(new object[columns]); 
} 

// replace the placeholder with the table 
for (int w = 1; w <= doc.Words.Count; w++) 
{ 
    // check for the placeholder match 
    if (doc.Words[w].Text == "PlaceHolder1") 
    { 
     Table t = doc.Tables.Add(doc.Words[w], dt.Rows.Count, dt.Columns.Count); 
     for (int i = 1; i <= t.Rows.Count; i++) 
     { 
      for (int j = 1; j <= t.Columns.Count; j++) 
      { 
       // add the 
       t.Cell(i, j).Range.Text = String.Format("PlaceHolder1 row:{0} column: {1}", i, j); 
      } 
     }