同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护。由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大。人工核对整理既费时又费力还耗神显然不合适,作为程序员的我们整么能不出手支援呢?

一个Word文档中主要包含了有这么几种类型的内容:paragraph(段落)、table(表格)、character(字符)、image(图片)等。我现在要解析的word文档中主要是表格、字符串、图片等信息,我们主要是要拿到表格中的数据。

处理这类文档数据当然优先考虑Python啦,python解析word文件可以使用包docx。首先我们需要安装python-docx,直接执行命令:pip install python-docx即可安装。当前的python-docx的版本为0.8.10,当python-docx安装完毕后通过python命令启动Python并输入import docx命令,如果没有提示任何错误即表示python-docx安装成功了。

python-docx

Python-docx是一个用于创建和更新Microsoft Word(.docx)文件的python库,可以很好的处理Word文档中的数据,但是要注意的是该库

{!-- PGC_COLUMN --}

无法处理.doc后缀的Word文档(直接该文件后缀是不行的),所以如果要处理.doc文档请先另存为.docx后缀的Word文档。python-docx提供了丰富的API Documentation可以帮助用户快速实现对Word文档的Document objects(文档对象)、Document Settings objects(文档设置对象)、Style-related objects (风格相关的对象)、Text-related objects(文本相关的对象)、Table objects (表格对象)、Section objects (段落对象)、Shape-related objects (形状相关的对象)、DrawingML objects (绘图对象)、Shared classes (共享类)及Enumeration (枚举)等各种操作,可以实现包含段落、分页符、表格、图片、标题、样式等几乎所有的Word文档中能常用的功能。

获取Word中的表格数据

现在我们可以创建一个Python文件来开始读取Word文件了,这里我们先创建一个规则的表格数据的Word文档来测试。tables是Word文件中所有的table构成的list(当前测试文件中只有一个table),range()函数在 for 循环中创建一个整数列表(表格是从1开始的)。

表格合并问题处理

上面我们处理的是一个没有单元格合并的标准表格,获取数据还是想到的简单的。现在我们继续测试Word文件中包含合并的单元格表格,如果还是用上面的方法那么合并的单元格内容会重复显示。比如这里的物品购买明细会出现4次,合计会出现3次,143会出现2次。

单纯的数据去重

如果我们只是为了获取其中的数据,那么晚我们可以使用最简单的方法就是去重复。创建一个空的列表用来存储单元格中的数据,当单元格中的数据在列表中已经存在时跳过该值,如果不存在则将其加入到列表中,这样最后的列表数据就是我们得到的不重复的数据了。有人应该已经发现问题了,那就是不同单元格中如果存在相同的数据的话也会被去重了。

单元格合并特点

这里我们需要知道一个单元格合并的特点,每个单元格都有其对应的内存地址,及时两个单元格之间的数据相同但是其对应的内存地址是不同的。而单元格合并之后这几个合并的单元格所处的内存地址是相同的,所以我们只要找到地址重复的单元格就说明这几个地址所处的单元格是合并的单元格。

内存地址去重

所以这里我们就可以通过内存地址来去重,当获取到指定单元格时我们拿着该单元格地址去判断这个对应的上一行和上一列中是否存在相同的内存地址,如果存在说明数据已经提取到了此时可以跳过后面的处理,如果不存在则继续接下来的操作即可。

总结:

我看网上的Python处理word文档中表格合并问题的方案都比较繁琐,这里提供个简单易懂的方式希望能帮到大家。以上内容是小编给大家分享的【Python实战009:读取Word文档中的表格数据及表格合并问题解决】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

该方法只能去横向去重,纵向单元格合无效!

python合并word表格_Python实战009:读取Word文档中的表格数据及表格合并问题解决...相关推荐

  1. python处理pdf实例_python 使用pdfminer3k 读取PDF文档的例子

    1.安装 pdfminer3k 通过pip安装: pip install pdfminer3k 下载安装:在网页 https://pypi.org/project/pdfminer3k/1.3.1/# ...

  2. 用代码读取配置文档中的指定数据

    需求: 在XX游戏根目录中,读取其ini文档,找到游戏的主执行程序,然后运行. 比如我要读取罗马2全面战争的游戏根目录中的ini配置文档.读取到游戏的主程序是"Rome2",然后运 ...

  3. 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)

    关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并) 首先,关于poi解析表格先阅读一篇他人的博客 使用poi读取word2007(.docx)中的复杂表格 ...

  4. 读取SolidWorks文档中的属性,生成PDF(工具开发)

    工作中,三维模型中的属性需要填写,其他地方也又需要填写,比如,我们公司买外购件需要填写外购卡. 比较懒,所以弄个小工具,直接从三维模型中提取属性数据,填写到响应的条目,根据物料编号,生成PDF. 读取 ...

  5. 使用iText在word文档中插入复杂的Table表格

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档和word文档的一个java类库.通过iText不仅可以生成PDF或rtf 的文档,而且可以将XML.Html文件转 ...

  6. C语言读取txt文档中的数据

    1.说明    txt文档中的数据格式:前后数据用空格隔开:    数据来源:matlab读取彩图的R.G.B三层的像素值,分别存放在三个txt文档中,用C读取到一维数组.    动态申请数组,还是需 ...

  7. 怎么批量删除 Word、PDF、PPT 以及 Excel 文档中的空白页?

    概要:「我的ABC软件工具箱」提供了删除空白页的功能,轻轻松松就可以实现批量删除文档中的空白页.目前支持 Word.PDF.PPT 以及 Excel 等格式文件文件.操作非常的方便,处理也非常高效! ...

  8. word文字铺满页面_Word 2010文档中让水印铺满整个页面的设置方法

    在Word 2010中,通过简单的鼠标单击即可为文档添加水印,但这样只能在每一个文档页面内添加一个水印,这个在前面的文章已经有所介绍,具体请见:Word文档添加内置水印.个性化图片及文字水印的方法,但 ...

  9. 来一段word的vba代码,实现将文档中的图片尺寸统一

    以下是一段VBA代码,它可以实现将Microsoft Word文档中的所有图片尺寸统一为指定的高度和宽度: Sub ResizeAllImages()Dim shp As Shape For Each ...

  10. 在双栏文档中插入图片(或者表格)使其占据两栏的大小位置

    方法1 (不太推荐,因为文档修改后格式就完全变了.见下面方法2吧) 在写期刊时需要用到双栏的布局,当要插入大图片时若是双栏显示则会看不清楚,此时就需要将图片设置为单栏显示. 在选择插入图片的位置时,选 ...

最新文章

  1. oracle io profile,ORACLE 中 PROFILE的管理
  2. 摄像头线性矫正的c语言实现,摄影测量考试试题及详细答案
  3. 在Eclipse上搭建Android C开发环境
  4. ulimit限制 新系统_系统限制ulimit学习
  5. 一分钟搞定Java环境变量配置
  6. 【工具】克隆题库(适用于所有以POJ2005-2017为模板的OJ平台)
  7. 文献记录(part42)--An end-to-end framework for unconstrained monocular 3D hand pose estimation
  8. n个点组成多少个三角形Java,农田开发 NOJ (已知N个点选取3个求最大三角形面积问题)...
  9. 编码方式_【每日一题】| 常见的编码方式之栅栏密码
  10. java6:流程控制
  11. [转]如何写一份交互说明文档
  12. 强化狼群等级制度的灰狼优化算法-附代码
  13. 基于四叉树的图像压缩问题
  14. 6 个常用的 API 接口在线管理平台
  15. 在阿里云ECS上搭建Skynet服务器与Unity通信
  16. 【无标题】上班族做什么副业赚钱?4种副业让你超过主业!
  17. [为梦想,千里行] 评论:35岁前买房没出息,说对了一半
  18. SAP 教程之 SAP 中的 IDOC
  19. 基于Spark实现推荐算法-1:推荐算法简介
  20. PowerBuilder 透明静态文本框(statictext)

热门文章

  1. 修改linu主机名后 启动tomcat服务报Unable to set localhost. This prevents creation of a GUID. Cause was: qudaogua
  2. 计算机专业术语linklist,常见的计算机专业词汇 .
  3. 交换机上网显示本地未连接服务器,本地连接提示受限制或无连接,处理思路?...
  4. 揭秘“菲住布渴”中运用的黑科技:除了check in、坐电梯、开门...全部刷脸之外,还有什么?
  5. Ubuntu的以太网卡找不到解决方法
  6. 【C/C++】黑盒测试
  7. 数据库系统概论(第5版)王珊 详细知识清单 期末复习速成 考前冲刺 面试——(第一篇 基础篇)
  8. 如何制作一个vagrant的base box 及安装 additions
  9. 【AI视野·今日CV 计算机视觉论文速览 第151期】Tue, 6 Aug 2019
  10. 微信小程序自定义loading