0

ブックマークでいっぱいのWordテンプレートがありますが、テーブルを挿入しようとすると行き詰まります...最初に、コレクションの要求されたメンバーが存在しないというCOMExceptionが発行されました..これは、ブックマークがあったことを意味しますセットの名前は、現在のテーブルの名前とは異なります..とにかく、テーブルはまったく表示されません..データがテーブルに入力される前にフォーマットを設定しました...次
のように:

   // Insert Table


            Word.Table tbl1 = this.Tables[1];
            Tables.Add(Range: tbl1.Range, NumColumns: 2, NumRows: 2);
            tbl1.Range.Font.Size = 10;
            tbl1.Range.Font.Name = "Georgia";
            tbl1.Range.Font.Bold.Equals(true);
            tbl1.Range.Font.ColorIndex = Word.WdColorIndex.wdBlue;
            tbl1.Range.Cells.Shading.Texture = Word.WdTextureIndex.wdTexture10Percent;
            tbl1.Range.Cells.Shading.BackgroundPatternColorIndex = Word.WdColorIndex.wdBlue;
            tbl1.Range.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
            tbl1.Rows.SetHeight(RowHeight: 24, HeightRule: Word.WdRowHeightRule.wdRowHeightAtLeast);
            tbl1.Columns[1].SetWidth(ColumnWidth: 170, RulerStyle: Word.WdRulerStyle.wdAdjustNone);
            tbl1.Columns[2].SetWidth(ColumnWidth: 310, RulerStyle: Word.WdRulerStyle.wdAdjustNone);
            tbl1.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleNone;
            tbl1.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleNone;

            // end of table insert

次に、テーブルを埋めるコードは...

 if (multipleLimits.Equals(false))
            {
                tbl1.Cell(1, 1).Range.Text = "Indemnity Limit:";
            }
            else
            {
                tbl1.Cell(1, 1).Range.Text = IndemlimitsText(iIndemnLimit).ToString();
            }


            switch (typeOfInsID)
            {
                case "4":
                    tbl1.Cell(1, 1).Range.Text = "Public/Products Liability:";
                    break;
            }

            tbl1.Cell(2, 1).Range.Text = "Excess:";

            if (multipleLimits.Equals(false))
            {
                tbl1.Cell(1, 2).Range.Text = sCurType + iIndemnLimit;
            }
            else
            {
                tbl1.Cell(1, 2).Range.Text = stripIndemLimitCode(iIndemnLimit).ToString();
            }

などなど...
私の質問は、解析するデータがない場合でもテーブルを表示する必要があるかどうかです...たとえば、解析データを1行ずつテストしたいのですか?? または、テーブルを表示するためだけに、テーブルを埋めるコードが存在し、正しい必要がありますか???
とりとめすぎて質問を混乱させていないことを願っています..
みんなありがとう!!!

4

1 に答える 1

0

答えはイエスです。すべてのセルが空の場合でも、テーブルは表示されます。私はあなたの範囲がここで問題だと思います。

object endOfDoc = "\\endofdoc";
object missing = System.Reflection.Missing.Value;
string totRows = 2;
string totColumns = 2;

word.Range wrdRng = doc.Bookmarks.get_Item(ref endOfDoc).Range;
oTable = doc.Tables.Add(wrdRng, totRows, totColumns, ref missing, ref missing);

ドキュメントの最後に 2 列 2 行の表が追加されます。テーブルの範囲(tbl1.Range)に追加しようとしますが、それはおそらくテーブル自体の内側の範囲です(つまり、セルを含みます)。段落またはテーブルの外の何かに追加したい。endOfDoc は、ドキュメントの最後に何かを追加するために使用できるブックマークです。

あなたが使用しているテンプレートがわからないので、最初にこれを試してから、必要な正しいブックマーク名を見つけてください。これは、上記のコードの endOfDoc と同じ方法で定義できます。

于 2012-12-16T12:38:51.440 に答える