私は.netプラットフォームに取り組んでいます。Word テンプレート (.dotx) を作成し、それにマージフィールドを追加しました。データベースの列の値から差し込みフィールドを置き換えています。今、私はマージフィールドをループしたいと思っています。例:- < DepartmentID > および < DepartmentName > という名前の差し込み項目があります。そして、「DepID」と「DepName」の2つの列を持つ「tblDepartment」という名前のデータベースのテーブルからデータを取得しています。このテーブルには 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つのページがあり、5ページ目にフィールドをマージし、SQLクエリが5行を返すことです。コードを実行すると、5ページ目に最初のレコードが表示され、次に6,7,8,9ページが1,2,3,4ページのコンテンツで作成され、10ページ目に2番目のレコードが表示されます....全体プロセスは 25 ページのドキュメント ファイルを作成します。
しかし、5ページ目だけにすべてのデータを表示したいです。余分なページを作成したくありません。