0

私は Microsoft.Office.Interop.Word.Application を使用しています。[PutfirstTableHere] のようなトークンがファイルに含まれるテンプレート化された Word ドキュメントがいくつかあります。実行時にテーブルを作成し、既存の Word ドキュメント内のトークンを生成されたテーブルに置き換えたいと考えています。 Word の Table を含む文字列トークン? 現在の問題の例/サンプルが見つかりません

4

2 に答える 2

0

Find インターフェイスとそのExecuteメソッドを使用して、ドキュメントのコンテンツを検索できます。最初の引数は、検索オブジェクトが作成された範囲内で検索するテキストです (あなたの場合、Word.Document.Content プロパティをお勧めします)。

コード:

Word.Document doc = Application.ActiveDocument;
Word.Range wholeDoc = doc.Content;                

Word.Find find = wholeDoc.Find;

object token = "[MyTableToken]";                
object missing = Type.Missing;

bool result = find.Execute(ref token, true, true, ref missing, ref missing, ref missing, ref missing, ref missing,
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

while (result)
{
    // wholeDoc object is replaced with executed search/find result
    CreateTable(wholeDoc.Duplicate);

    result = find.Execute(ref token, true, true, ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
}

テーブル作成メソッドのサンプル:

private void CreateTable(Word.Range range)
{
    Word.Tables tables = null;
    try
    {
        int sampleRowNumber = 3, sampleColumnNumber = 3;

        range.Text = "";
        tables = range.Tables;

        tables.Add(range, sampleRowNumber, sampleColumnNumber);
    }
    finally
    {
        Marshal.ReleaseComObject(range);
        Marshal.ReleaseComObject(tables);
    }
}
于 2013-07-30T21:52:58.200 に答える
0

これを試して:

protected void InsertTableAtBookMark(string[][] docEnds, string bookmarkName)
    {
        Object oBookMarkName = bookmarkName;
        Range wRng = WordDoc.Bookmarks.get_Item(ref oBookMarkName).Range;

        Table wTable = WordDoc.Tables.Add(wRng, docEnds.Length, docEnds[0].Length);
        wTable.set_Style("Table Grid");

        for (int i = 0; i < docEnds.Length; i++)
        {
            for (int j = 0; j < docEnds[0].Length; j++)
            {
                wTable.Cell(i, j).Range.Text = docEnds[i][j];
                wTable.Cell(1, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                wTable.Cell(1, 1).VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;
            }
        }
        Borders wb = wTable.Borders;
        wb[WdBorderType.wdBorderHorizontal].LineStyle = WdLineStyle.wdLineStyleNone;
        wb[WdBorderType.wdBorderVertical].LineStyle = WdLineStyle.wdLineStyleNone;

        wTable.Borders = wb;
    }

WordDoc は、Microsoft.Office.Interop.Word 名前空間の Document 型です。

于 2013-07-30T12:25:58.363 に答える