在WORD中通过鼠标右键菜单“插入”按钮中的功能可以实现表格行列的添加,也可以通过“删除单元格”按钮中的删除单元格的功能实现表格行列的删除;当然还可以通过“布局”菜单中的删除和添加功能实现。

鼠标右键插入按钮

鼠标右键删除单元格按钮

删除单元格功能图

在布局菜单上删除和添加表格行列

而在python-docx包中怎么实现表格行和列的添加和删除?笔者总结了add_column()函数、add_row()函数和remove()函数的用法,分别从如下3个部分进行说明,并将本文的主要内容制作了思维导图。

01表格中添加行、列

默认位置添加

在表格中使用add_column(width)和add_row()可以实现对行和列的添加,其中add_row方法没有参数,而add_column方法必须知道表格中的宽度,宽度可以使用单位换算如Cm ,Inches等。添加代码如下:

from docx import Documentfrom docx.shared import Cmdocument = Document('test.docx') # 打开文档print('test.docx表格总数:', len(document.tables))table = document.tables[1] # 获取第二个表格对象print('表格2的行列数:', len(table.rows), len(table.columns)) # 打印表格的行列数table.add_row() # 为表格最底部增加一行table.add_column(Cm(3)) # 为表格最右侧增加一列print('添加行列后表格2的行列数:', len(table.rows), len(table.columns))document.save('test2.docx') # 保存文档添加行、列后运行结果见下图:

添加行、列后运行结果图

输出的文档结果见下图

表格中add_row()函数默认添加在表格的底部,而add_column()函数默认添加到列最右侧。

02表格行、列的定位

在python-docx中表格中行或者列的定位主要通过

table.rows和table.columns两个属性获取行和列的的总对象,然后使用索引获取指定的行或者列对象。获取表格中的第2行和第2列代码如下:

row = table.rows[1]column = table.columns[1]

表格、行、单元格的关系

在表格中虽然单元格可以从column中的cells中来遍历,但是单元格是按行存储的,这点将在删除列的部分重点说明。

03删除表格中的行、列

删除表格中的行

表格中行的删除可以使用row._element.getparent().remove()函数来实现。具体步骤是,首先获取表格中的行对象,然后使用remove()函数进行删除。删除test.docx中表格2中的第2行,代码如下:

document = Document('test.docx') # 打开docx文档print('test.docx表格总数:', len(document.tables)) # 打印表格总数table = document.tables[1] # 获取第二个表格对象,用于删除表格中的行print('表格2的行列数:', len(table.rows), len(table.columns)) # 打印表格的行列数,删除表格行前row = table.rows[1] # 获取表格2中第二行row._element.getparent().remove(row._element) # 删除表格中的第二行print('删除表格中第2行后的表格行列数:', len(table.rows), len(table.columns))运行结果如下图:

删除表格中的第2行的运行结果

删除第2行后表格的效果如下图:

删除第2行后的运行效果图

删除表格中的列

列的删除则不能像删除行那样使用对应的remove()函数,因为在_Column中没有定义_element,但可以采用单元格进行删除。代码如下:

document = Document('test.docx') # 打开docx文档,用于删除表格列print('test.docx表格总数:', len(document.tables)) # 打印docx文件中表格总数table = document.tables[1] # 获取第二个表格对象,用于删除表格中的列print('表格2的行列数:', len(table.rows), len(table.columns)) # 打印表格2的行列数column = table.columns[1] # 获取表格2中第2列for cell in column.cells: # 遍历列中单元格cell._element.getparent().remove(cell._element) # 删除第2列的单元格print('删除第2列后的表格行列数:', len(table.rows), len(table.columns))document.save('test2.docx') # 保存文档,删除列后删除表格第2列后运行结果如下图:

删除表格2中的第二列运行结果

删除第2列后表格见下图

删除表格2中的第二列WORD文档效果图

通过cell的remove()方法可以删除表格的列,但是由于表格中的cell是按行存储,每行存储的cell的数量并没有变化,所以当删除单元格后,后续的单元格会补上。那么此时表格的存储形式将不是WORD文档表现出的效果,读取test2.docx中的表格2代码如下:

document = Document('test2.docx') # 打开文档table = document.tables[1] # 获取第二个表格对象,用于读取单元格内容i = 0 # 标识行的序号for row in table.rows: # 读取表格中的行i = i + 1 # 行的序号从1开始for cell in row.cells: # 读取行中的单元格print('第' + str(i)+'行:', cell.text) # 打印单元格中的内容运行结果入下图

表格内单元格的遍历

表格仍然按照每行3个元素存储,表格仍然是3行3列,但第3行是空行。笔者从表格行列的添加、定位和删除等3个部分总结了python-docx包中对WORD文档表格行列的操作并制作了思维导图见下图,希望为使用python-docx包对表格行列操作有需求的人提供参考,本文中如有不妥之处,请在评论中指出。

python-docx添加表格行和列

python删除word表格中的某一行_python-docx添加和删除表格行、列相关推荐

  1. python删除word表格中的某一行_python docx删除word段落

    使用python-docx编辑一个docx文档时, 对添加的方法使用很多, 但有时候也会用到删除和修改 python-docx中并没有提供delete()方法, github上给出了解决方法: htt ...

  2. dtgrid 手动条件删除表格中的某一行

    dtgrid 手动条件删除表格中的某一行 var grid = $.fn.DtGrid.init(dtGridOption);$(function () {grid.load();});functio ...

  3. js动态删除表格中的某一行

    js动态删除表格中的某一行 <!DOCTYPE html> <html lang="en"> <head><meta charset=&q ...

  4. Python提取Word文件中的目录标题保存为Excel文件

    from docx import Document from openpyxl import Workbook from openpyxl.styles import Alignment, Borde ...

  5. Python检查Word文件中包含特定关键字的所有页码

    推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 配套资源: 用书教师可以联系董老师获取教学大纲.课件.源码.教案. ...

  6. Python将Word文件中的内容写入Excel文件

    在日常办公中我们经常需要将word文件中的数据写入Excel中,如果是手动一个一个进行复制粘贴,那将会非常的耗时且繁琐! 遇到这种问题我们首先想到就是利用编程解决,今天我分享一个word转excel的 ...

  7. python中列表中增加逗号,Python 实现在文件中的每一行添加一个逗号

    步骤1:读取每行(每行的类型是str) 步骤2:对每行列表化 步骤3:弹出每行的/n两个字符 步骤4:追加,/n三个字符 代码实现如下: #import os From_file=open('D:\\ ...

  8. java使用poi在word模板中替换柱状图、折线图、饼图、表格、文本、图片

    介绍 java使用poi在word模板中替换柱状图.折线图.饼图.表格.文本.图片 软件架构 安装教程 环境搭建:jdk1.8.0_291.maven1.8.0_291 IDEA工具:IntelliJ ...

  9. python在长字符串中寻找重复子串_Python 入门到精通

    1.变量 1.python不用事先声明变量,赋值过程中就包含了变量声明和定义的过程 2.用"="赋值,左边是变量名,右边是变量的值 1.1. 数字 整数 int_var = 1 长 ...

  10. 选下拉框的的值对应上传相应的图片_如何在excel中实现,选择下拉菜单某一项,该表格中就出现选项对应的数据?(excel表格制作选择数据)...

    怎样从多个excel表格中提取数据,做数据分析图呢 1. 数据的.录入.表格的设置,效果如示. 2.如图所示,选进行分析的图据范围 3.如图所示,点击菜单栏目上的"插入",选择&q ...

最新文章

  1. 如何提取fasta文件的部分信息
  2. 1499抢飞天茅台?可惜了,才26万的并发app就崩了!
  3. 做 NLP 算法研究,去大公司还是创业公司?
  4. SAP CRM responsibility的维护
  5. 二叉搜索树的插入、删除、修剪、构造操作(leetcode701、450、669、108)
  6. 2018-2019-2 网络对抗技术 20165332 Exp6 信息搜集与漏洞扫描
  7. c语言c98标准,1.3.2 C语言标准
  8. js判断是否以xxx结尾
  9. [置顶]献给写作者的 Markdown 新手指南
  10. 为什么都建议学java而不是python-为什么都建议学Java而不是Python?两者有什么区别吗?...
  11. python实现网站测速软件_python实现网站友情链接查询与网站死链接查询的两个脚步...
  12. Java菜鸟教程 标识符
  13. matlab——imhist和histeq函数
  14. 终于知道什么叫BSS段
  15. MySQL 8.0 drop table恢复
  16. 0927锚框(Anchor box)
  17. 学习CALCULATE函数(六)丨帕累托之累计求和
  18. ZYNQ7020(黑金)纯verilog驱动4.3寸RGB接口TFT液晶屏(AN430)显示彩条
  19. android 机器人绘制,画个android机器人
  20. 力扣 leetcode 605. 种花问题 (python)

热门文章

  1. 版人人商城V3.7.6开源解密版小程序前端+后端+安装使用视频教程
  2. MT4外汇操盘跟单软件
  3. DBSCAN密度聚类算法
  4. python 分词器比较
  5. nrf52840芯片入门
  6. Aliplayer简单使用
  7. 在Python 3中使用深度森林(Deep Forest)进行分类
  8. sqlplus 命令大全
  9. 前富士康CEO程天纵:创新来自长尾,创业源于创客!
  10. 【PCBA方案】咖啡电子秤芯片方案介绍