3

情况是这样的:我的选择是表格中的两行数据,我想删除这两行。当我使用下面的代码时,行中的内容被删除了,但行仍然存在。所以,我的问题这是:如何删除整行?谢谢。顺便说一句,我使用“书签”来操作选择。

/// <summary>
/// Delete table row
/// </summary>
/// <param name="bookmark"></param>
public void DeleteTableRow(string bookmark)
{
    object oBookmark = bookmark;
    if (doc.Bookmarks.get_Item(ref oBookmark) != null) {
        doc.Bookmarks.get_Item(ref oBookmark).Select();
        object wdLine = WdUnits.wdLine;
        object wdParagraph = WdUnits.wdParagraph;
        object wdTableRow = WdUnits.wdRow;
        object wdCharacter = WdUnits.wdCharacter;
        object wdExtend = WdMovementType.wdExtend;
        object oCount = 1;

        Selection selection = app.Selection;
        selection.HomeKey(ref wdLine, ref nullobj);
        selection.MoveDown(ref wdLine, ref oCount, ref wdExtend);
        selection.Delete(ref wdCharacter, ref nullobj);
    }
}
4

1 回答 1

0

有一个类似的问题,需要删除未使用的表行,采用这种方法:如果您有选择 2 行的“书签”,您可以像这样删除它们(至少在 Word2016 中):

object oBookmark = bookmark;
if (doc.Bookmarks.get_Item(ref oBookmark) != null)
    doc.Bookmarks.get_Item(ref oBookmark).Range.Rows.Delete();

似乎有效(至少在 Word2016 中),但不知何故我的格式被破坏了(那是一个噩梦模板),然后使用“选择”(它运行顺利):

bookmark.Select();
app.Selection.Rows.Delete();

不确定它从哪个版本开始工作,但如果有人遇到同样的问题,我会把它留在那里。

The main pint that both Range and Selection objects have Rows property, that have Delete method, that works like "Delete Rows" action in Word.

于 2017-05-05T05:56:22.567 回答