【问题标题】:In python-docx how do I delete a table row?在 python-docx 中,如何删除表格行?
【发布时间】:2019-04-06 03:06:18
【问题描述】:

我不知道如何在 python-docx 中删除表格行。具体来说,我的表格带有一个标题行和一个具有存储在第一个单元格文本中的特殊标记的行。我使用令牌搜索表格,然后填写表格的一堆行。但是如何在添加新行之前删除具有令牌的第 1 行? 我试过了

table.rows[1].Delete()table.rows = table.rows[0:1]

第一个因无法识别的函数而失败(文档在 Microsoft API 中引用了此函数,但我不知道这意味着什么)。 如文档所述,第二个失败是因为 table.rows 是只读的。

那我该怎么做呢?

【问题讨论】:

    标签: ms-word python-docx


    【解决方案1】:

    这个功能不是内置的,这让我很震惊。在我搜索论坛时,我发现在过去五年中很多人都在问这个问题。但是,存在一种解决方法,这里是:

    def remove_row(table, row):
        tbl = table._tbl
        tr = row._tr
        tbl.remove(tr)
        
    row = table.rows[n]
    remove_row(table, row)
    

    【讨论】:

      【解决方案2】:

      不幸的是,All the Rage 的答案对我不起作用。但是,我能够按如下方式删除行和列:

      from  docx  import  Document
      w=Document("path")
      table_1=w.tables[0]
      
      # delete row 
      print(len(table_1.rows))
      row2=table_1.rows[1]
      row2._element.getparent().remove(row2._element)
      print(len(table_1.rows))
      
      # delete column 
      col=table_1.table.columns[1]
      for  cell in  col.cells:
          cell._element.getparent().remove(cell._element)
      

      【讨论】:

        【解决方案3】:

        你可以使用这个功能:

        from docx import Document
        
        document = Document('YOUR_DOCX')
        
        def Delete_row_in_table(table, row):
            document.tables[table]._tbl.remove(document.tables[table].rows[row]._tr)
        
        Delete_row_in_table(0, 0)
        
        document.save('OUT.docx')
        

        【讨论】:

          【解决方案4】:

          我制作了这个视频来展示如何轻松做到这一点,因为它让我很困惑。 https://www.youtube.com/watch?v=qA5QRXwAt2I

              Table = document.tables[0]
              RowA=Table.rows[0]
          
              table_element = Table._tbl
              table_element.remove(RowA._tr)
          

          上面的代码从第一个表中删除了第一行。 您必须更改 xml 元素,没有办法通过 docx 的 API 来完成。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-11
            • 1970-01-01
            • 1970-01-01
            • 2017-08-20
            • 1970-01-01
            • 2018-02-21
            相关资源
            最近更新 更多