我正在.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");
}
}
问题是,我的文档有五页,第 5 页的合并字段和 sql 查询返回 5 行。当我执行我的代码时,它在第 5 页显示第一条记录,然后使用 1、2、3、4 页内容创建 6、7、8、9 页,在第 10 页显示第二条记录,依此类推....过程创建 25 页的文档文件。
但我只想在第 5 页显示所有数据。并且不想创建额外的页面。