在c中使用word模板创建word文档

时间:2013-03-13 17:00:00

标签: asp.net sql-server ms-word mailmerge word-template

我正在研究.net平台。我创建了一个单词模板(.dotx)并在其中添加了合并域。我正在从数据库列值替换合并字段。现在我想循环合并字段。 例如: - 我有名为<的合并字段DepartmentID>和< DepartmentName> 。我从数据库的名为“tblDepartment”的表中获取数据,该表有两列“DepID”和“DepName”。这个表有5行。我想循环这些合并域。

我想要显示这样的文件。 在执行docx文件之前是: -                             < DepartmentID> < DepartmentName>

代码执行后

: -                                  DepID DepName

                               1                 DotNet

                               2                 Java

                               3                 PHP

这是我的代码:

        foreach (Word.Field myMergeField in wordDoc.Fields)
        {
            Word.Range rngFieldCode = myMergeField.Code;
            String fieldText = rngFieldCode.Text;
            // ONLY GETTING THE MAILMERGE FIELDS
            if (fieldText.StartsWith(" MERGEFIELD"))
            {
                Int32 endMerge = fieldText.IndexOf("\\");
                Int32 fieldNameLength = fieldText.Length - endMerge;
                String fieldName = fieldText.Substring(11, endMerge - 11);
                fieldName = fieldName.Trim().Replace("\"", "");
                if (fieldName == "DepartmentID")
                {
                    myMergeField.Select();
                    wordApp.Selection.TypeText("DepartmentID");
                }
                if (fieldName == "DepartmentName")
                {
                    EAccreditationEntities dbModel = new EAccreditationEntities();
                    var q = (from p in dbModel.Departments select p).ToList();
                    //here q has all data from database , have columns (ID and Name of Department)
                     myMergeField.Select();
                    wordApp.Selection.TypeText("DEPNAME");
                }
            }

问题是,我的文档有五个页面,第五页合并字段,sql查询返回5行。当我执行我的代码时,它显示第5页上的第一条记录,然后6,7,8,9页创建1,2,3,4页内容,第10页显示第2条记录等等....进程创建25页文档文件。

但我想仅在第5页显示所有数据。而且不想创建额外的页面。

0 个答案:

没有答案