Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用复杂表数据替换dotx占位符_C# - Fatal编程技术网

C# 用复杂表数据替换dotx占位符

C# 用复杂表数据替换dotx占位符,c#,C#,我们要求使用Microsoft Word文档作为模板,替换其占位符。它的工作原理很好,简单的地方持有人更换 然而,当我们需要添加placeholder时,它会被具有行数的表所取代,这取决于从数据库中检索到的数据 目前,我们正在使用C代码,在替换到Microsoft Word模板之前生成数据 有没有更好的方法?或者我们可以使用SSR来满足这一要求 最终结果应该是相同的word文档,其占位符由数据库中的值替换。请查看此处描述的word文档中的XML数据绑定 基本上,您可以向Word文档添加内容,该文

我们要求使用Microsoft Word文档作为模板,替换其占位符。它的工作原理很好,简单的地方持有人更换

然而,当我们需要添加placeholder时,它会被具有行数的表所取代,这取决于从数据库中检索到的数据

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

有没有更好的方法?或者我们可以使用SSR来满足这一要求


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

请查看此处描述的word文档中的XML数据绑定

基本上,您可以向Word文档添加内容,该文档位于docx包中分发的XML文件中

MSDN示例也可能有所帮助

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

您可以使用:

// 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);
            }
        }