【问题标题】:How to delete table row which current selection in word by using C#?如何使用 C# 删除 word 中当前选择的表行?
【发布时间】:2017-05-05 14:15:06
【问题描述】:

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

/// <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);
    }
}

【问题讨论】:

    标签: c# ms-word


    【解决方案1】:

    有一个类似的问题,需要删除未使用的表行,采用这种方法: 如果您有选择 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();
    

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

    Range 和 Selection 对象都具有 Rows 属性的主要特征,具有 Delete 方法,其工作方式类似于 Word 中的“删除行”操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-16
      • 2019-12-17
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      相关资源
      最近更新 更多