2

我写了一个 WPF 应用程序来打印一个包含一些表格的 word 文档,它可以工作,但我得到的是嵌套表格而不是分隔表格。

我正在查看不同的帖子,但它们都没有很好地工作,例如:

同样,当我尝试用 word 录制一个宏时,这给了我

Selection.MoveDown Unit:=wdLine, Count:=1

我把它变成了:

wordApplication.Selection.MoveDown(WdUnits.wdLine, 1);

甚至:

wordApplication.Selection.MoveDown(WdUnits.wdLine, 11);

这是我最初代码的开头:

using System.Drawing;
using System.Reflection;
using NetOffice;
using Word = NetOffice.WordApi;
using NetOffice.WordApi.Enums;
using System.Globalization;
using System.Windows;
...
Word.Application wordApplication ...
Word.Document newDocument = wordApplication.Documents.Add();

这是第一个表:

        Word.Table table = newDocument.Tables.Add(wordApplication.Selection.Range, 6, 2);

        // insert some text into the cells
        table.Cell(1, 1).Select();
        wordApplication.Selection.TypeText("...");
...

这是第二个表格,但文本进入我的第一个表格的最后一个单元格(最后一个单元格):

            Word.Table tableSchool = newDocument.Tables.Add(wordApplication.Selection.Range, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);
        tableSchool.Cell(1, 1).Select();
        wordApplication.Selection.TypeText("...");
...

更新。6 月 17 日晚上 9 点

我发现了一些东西,它把光标放在表格之外,但它在文件的开头,这不应该是:

    wordApplication.Selection.GoToNext(WdGoToItem.wdGoToSection);
    wordApplication.Selection.TypeText("GoToNext");

更新。6 月 17 日,晚上 9:30

使用“InsertAfter”是否有效,具体取决于我放置此语句的位置,但这仍然不能解决我的问题。

    wordApplication.Selection.Range.InsertAfter("test2");

    Word.Table table = newDocument.Tables.Add(wordApplication.Selection.Range, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);

这应该将“wordApplication.Selection.Range”调整为某种“InsertAfter”,结合我发现的两件事。

更新于 18.06 上午 07:30

如果我使用它,我会得到一个“ComException”(宏记录器向我展示了这个):

wordApplication.Selection.MoveRight(WdUnits.wdCharacter, 1);
        wordApplication.Selection.TypeParagraph();

更新于 18.06 上午 07:45

然后我找到了这个,它非常接近我的目标(但它替换了上表的最后一个单元格):

            wordApplication.Selection.EndKey(WdUnits.wdStory, WdMovementType.wdExtend);
        wordApplication.ActiveWindow.Selection.PasteAndFormat(WdRecoveryType.wdPasteDefault);

提前致谢 :)

4

0 回答 0