我正在研究.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页显示所有数据。而且不想创建额外的页面。