使用microsoft工作自动化c#添加动态表行

时间:2016-07-14 13:22:14

标签: c# ms-word office-interop

我有一个word文档模板,其中包含几个需要使用c#代码填充的表单字段。

下面是文档图像   enter image description here 下面的代码用于访问和填写文档表单字段, 但是当我到达表格部分时,有时需要填充的行比模板中预先定义的行多。

红色标记区域是我想用数据填充它并根据需要创建尽可能多的行的表。

我用来填充数据的代码是

        string fileName = Path.GetTempFileName();
        File.WriteAllBytes(fileName, Properties.Resources.DocumentTemplate);
        Word.Application word = new Word.Application();
        Word.Document doc = new Word.Document();
        doc = word.Documents.Add(fileName);
        doc.Activate();


        doc.FormFields["file_num"].Range.Text = "some text";
        doc.FormFields["fam_size"].Range.Text = "another text";
        doc.FormFields["nationality"].Range.Text = "another text";
        for(int i =0; i< rowsInDatabaseCount; i++)
        {
           //i don't know how to add row and reach each form field inside
        }

我希望有人可以帮助我实现我想要的目标。

提前谢谢你......

1 个答案:

答案 0 :(得分:1)

有多种方法可以解决这个问题。 1)由于数据来自数据库,因此一种方法是使用InsertDatabase方法。

2)您可以将该块作为制表符或逗号分隔文本插入,然后使用ConvertToTable()方法转换为表格。

3)您可以使用Rows和Cols集合(表格)和.Add方法添加新行。

4)您可以将模板创建为XSL并使用该XSL转换数据(XML)以生成最终的HTM。 Word可以打开HTM文件。

(所有这些选项都适用于“简历”,“测试结果”......与您提供的相似布局的创作。我发现最终选项4是最具活力的选项,最终用户可以定义他们自己的模板使用简单的HTML编辑器 - 比我的文字模板更好。)