0

私は.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ページ目だけにすべてのデータを表示したいです。余分なページを作成したくありません。

4

0 に答える 0