c# - 如何使用C#删除word中当前选中的表格行?

标签 c# ms-word

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

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

最佳答案

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

关于c# - 如何使用C#删除word中当前选中的表格行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621475/

相关文章:

html - 在没有安装 MS Word 的情况下将 html 导出到 Word 的最佳方法?

c# - 通话被被叫方拒绝。 (来自 HRESULT : 0x80010001 (RPC_E_CALL_REJECTED)) 的异常

javascript - 在 Intranet 上打开文档时访问 VBA 中的事件文档

c# - CreateObject 等效于 C# 4、动态关键字和后期绑定(bind)?

c# - 使 C# 应用程序组策略感知

c# - Linq 查询来填充复杂模型?

pdf - 使用PowerShell脚本访问Word 'Save As'对话框

c# - 是否可以通过 Wcftest 客户端测试 WCF throttle 行为?

c# - 如何使用 linq 验证用户名/密码?

c# - 如何从 Word 文档复制富文本内容控件的内容并使用 Open XML SDK 删除控件本身