问题描述

python中用docx库读取word文件,若word文件中包含合并的表格表格

则通过docx读取显示:

file = docx.Document(path)
for table in file.tables:for row in table.rows:for cell in row.cells:print(cell.text)

结果为:
1-1
1-1
1-3
1-4
2-1
2-2
2-3
2-4
3-1
3-1
3-3
2-4
3-1
3-1
4-3
4-3
合并的单元格会重复显示,如1-1会显示两次;
如果在循环中改变cell.text内容,则保存后会重复显示

for table in file.tables:for row in table.rows:for cell in row.cells:cell.text = cell.text + 'test'
file.save(path2)

解决方案

打印cell发现合并的单元格虽然重复但公用内存地址:
<docx.table._Cell at 0xbbeb1d0>,
<docx.table._Cell at 0xbbeb1d0>,
<docx.table._Cell at 0xbbeb630>,
<docx.table._Cell at 0xbbeb400>,
<docx.table._Cell at 0xbbeb9b0>,
<docx.table._Cell at 0xbbeb9e8>,
<docx.table._Cell at 0xbbeb240>,
<docx.table._Cell at 0xbbeb710>,
<docx.table._Cell at 0xbbeb780>,
<docx.table._Cell at 0xbbeb780>,
<docx.table._Cell at 0xbbebac8>,
<docx.table._Cell at 0xbbeba90>,
<docx.table._Cell at 0xbbeba20>,
<docx.table._Cell at 0xbbeba20>,
<docx.table._Cell at 0xbbebba8>,
<docx.table._Cell at 0xbbebbe0>
所以,可先判断cell是否重复再修改cell.text,
代码:

cell_set = []
for table in file.tables:for row in table.rows:for cell in row.cells:if cell not in cell_set:cell_set.append(cell)cell.text = cell.text + 'test'

执行结果:

补充:

按行打印时,按行合并的单元格地址相同,按列合并的单元格地址还是不相同,所以还需按列找出重复的单元格,再与按行找到的单元格合并去重,才能解决这个问题:

    row_cells, column_cells = [], []index = []width, length = len(table.columns), len(table.rows)k = 0for row in table.rows:for cell in row.cells:if cell not in row_cells:index.append([k//width, k%width])row_cells.append(cell)k += 1k = 0for column in table.columns:for cell in column.cells:if cell not in column_cells:column_cells.append(cell)elif [k%length, k//length] in index:index.remove([k%length, k//length])k += 1# index即为找到的单元格索引for i in index:table.rows[i[0]].cells[i[1]].text += 'test'

执行结果:

之所以没有直接按索引搜索cell添加到row_cells和colums_cells中是因为直接按索引查找的cell合并的单元格地址也不相同
虽然方法繁琐,但总算可用,如有好的解决方案欢迎讨论~

python docx处理word文档中表格合并问题相关推荐

  1. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  2. Python批量提取docx格式Word文档中所有批注

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

  3. 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容

    点上方"菜鸟学Python",选择"星标" 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求.日常的办公过 ...

  4. Python读取\修改word文档中的文本框内容

    本文所指的 word文档,都是docx结尾的,如果是doc结尾的,请参考上篇:点我 我们绝大多数的需求都是 利用python-docx 来读取word文档中的内容,进而再对内容进行其他处理,如下代码, ...

  5. 如何把 word 文档中 表格数据导出

    1.问题 word文档表格中字段数据中有段落标记(^p)符号,导致复制粘贴数据到 excel 中l时 ,会因为标记符号把本应是一个字段分成多个字段存储在不同的单元格中. 2.解决方法: 1.选中所有单 ...

  6. python批量提取word文档中的图片(含图片格式转换和GUI)

    作者:小小明 文章目录 doc格式批量转为docx 批量提取docx文档的图片 批量图片格式转换 完整代码 GUI图形化工具开发 打包exe 给GUI加入进度条 日常工作中,领导要求你将一份 Word ...

  7. word文档中表格计算机功能在哪,电脑在Word文档中插入Excel图表不显示如何解决...

    电脑中都会有安装一个Word文档,我们可以编辑和整理文件,但是一位用户说做Word文档里,想插入EXCEL图表,但是显示出来的是一段代码,尝试很多次还是一样,怎么办呢?如果你还在为此问题困扰,那么可以 ...

  8. Word文档中--邮件合并

    笔者的学校一直使用CSC校长办公系统,其运算功能十分强大,不到一分钟就可将一千多学生的成绩汇总.排名,尤其是排名功能,可以排出每个学生的总分及各科成绩在班上和全年级的名次.不足的是,它的打印功能不太强 ...

  9. Python批量提取docx格式Word文档中所有文本框内的文本

    功能描述: 批量提取指定Word文档(docx格式)中所有文本框中的文本. 测试文件: 参考代码: 执行结果:

最新文章

  1. 实战教程 | 车道线检测项目实战,霍夫变换 新方法 Spatial CNN
  2. 用Latex模板写简历
  3. JBoss EAP应用获取运行模式、相关路径及节点信息
  4. redis事务不具有回滚机制,那么它是如何进行事务控制的
  5. spring boot 报错:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default p
  6. 双指针--Codeforces Round #645 (Div. 2) d题
  7. iTunes只能装C盘吗_电脑技巧分享:安装win10系统时系统盘C盘分区多大空间适合?...
  8. python爬虫开发 从入门到实战 pdf 谢乾坤_python字符串和整数相互转换的实例分享...
  9. 2015手机病毒暴涨16倍 每天70万人次连接风险WiFi
  10. C#水晶报表,窗体不显示,闪退
  11. 优秀案例快速提升UI设计界面的视觉效果、用户体验
  12. 每日学习笔记(17)
  13. 转,python的匿名函数lambda解释及用法
  14. win7安装mysql后“应用程序无法启动因为应用程序的并行配置不正
  15. 8086 CPU结构
  16. 思维破局:真正废掉一个人的,从来都不是一份稳定的工作
  17. mysql audit_关于Mysql Enterprise Audit plugin的使用
  18. bzGhost 打造跨平台即时聊天软件之websocket
  19. 图片化加手动推导深刻记忆冒泡排序全过程
  20. win10设置让所有文件夹查看方式都是详细信息

热门文章

  1. 【ROS wiki】利用ros wiki寻求问题答案
  2. 网赚项目,你知道哪些暴力截流的方法?
  3. Printrun基础知识
  4. 【Opencv实战】AI换背景:朋友结婚没有蓝天白云怎么办?幸亏我急中生智。
  5. 讲座“计算机与手机导购”
  6. GPT-4.0人工智能的下载
  7. 百度游戏:仅调整买量策略,首日ROI提升35%
  8. kindeditor配置syntaxhighlighter...
  9. decompose transformation matrix
  10. 每日新闻 | 科技部出台27条措施;中国联通加快5G建设