太长了,我决定还是拆开三篇写。
 

(二)表格篇(table)

(三)样式篇(style)(本篇)

选你所需即可。下面开始正文。


在前两篇中,我们已经解析出了paragraph和table,那么,如何把它们按顺序组合在一起呢?毕竟,一般的word不会固定把表格和文字分开,而是混排在一起的。
答案是,没办法。
可能有的同学在看过前两篇之后,已经亲自动手去玩python-docx,并且发现了style这个东西。我本来也发现了。使用
docx.styles
可以获取全部的样式,并且用
style.type
可以看出,它属于paragraph还是table。那么,如果我这样……
for s in docx.styles:
if s.type == WD_STYLE_TYPE.PARAGRAPH:
print(s.text)
elif s.type == WD_STYLE_TYPE.TABLE:
for row in s.rows:
for cell in row.cells:
print(cell.text)
不就可以按顺序获得所有段落和表格了吗?如果你亲自做过了,你就会发现行不通。通过循环获得的内容,跟word里的前后顺序不一样,鬼知道这个style是按什么顺序添加上的!
 
不过,对于单独的paragraph或table来说,style还是很有用的。用来判断当前段落或单元格的样式,我用到的属性主要就是type和name这两个——好吧,还是type用的最多。
 
paragraph.style.type或p.runs[i].style.type是个枚举类型的常量,在库中的主要位置为docx.enum.____,从本系列文章的第一篇可以看到大概的用法,如果要比较细致地展示word文档的样式,style还是比较重要的。尤其是,如果我们把程序设计为直接写word而不是读的时候,更体现出style的重要性。比较典型的例子就是,如果页面上有富文本编辑器,或者markdown格式编辑器,后台想要导出word的时候,肯定要用到style。
 
当然,对于设计者来说是非常爽的,但是对于后端程序员来说,还是挺苦逼的。枚举类型没有什么技巧可言,完全就是苦力活。
 

关于如何解析word,我就介绍这么多了。这一篇写得比较短,因为style我总共也没有用上几种,就只能写点理论知识;二是style本来也难以独立成篇,我只是想吐槽一下当时走的弯路。
 

用python解析word文件(三):style的更多相关文章

  1. 用python解析word文件(二):table

    太长了,我决定还是拆开三篇写.   (一)段落篇(paragraph) (二)表格篇(table)(本篇) (三)样式篇(style) 选你所需即可.下面开始正文. 上一篇我们讲了用python-do ...

  2. 用python解析word文件(一):paragraph

    太长了,我决定还是拆开三篇写.   (一)段落篇(paragraph)(本篇) (二)表格篇(table) (三)样式篇(style) 选你所需即可.下面开始正文. 最近公司的项目,需要在页面上显示w ...

  3. 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))

    首先需要安装相应的支持库: 直接在命令行执行pip install python-docx 示例代码如下: import docxfrom docx import Document #导入库 path ...

  4. 用python读取word文件里的表格信息【华为云技术分享】

    在企查查查询企业信息的时候,得到了一些word文件,里面有些控股企业的数据放在表格里,需要我们将其提取出来. word文件看起来很复杂,不方便进行结构化.实际上,一个word文档中大概有这么几种类型的 ...

  5. Python解析excel文件并存入sqlite数据库

    最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解 ...

  6. Python解析Wav文件并绘制波形的方法

    资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...

  7. 用Python将word文件转换成html(转)

    用Python将word文件转换成html   序 最近公司一个客户大大购买了一堆医疗健康方面的科普文章,希望能放到我们正在开发的健康档案管理软件上.客户大大说,要智能推送!要掌握节奏!要深度学习!要 ...

  8. C#仪器数据文件解析-Word文件(doc、docx)

    不少仪器数据报告输出为Word格式文件,同Excel文件,Word文件doc和docx的存储格式是不同的,相应的解析Word文件的方式也类似,主要有以下方式: 1.通过MS Word应用程序的DCOM ...

  9. Python处理word文件

    python对word文件进行读写和复制 import win32conimport win32com.clientimport os #读取word文件def readWoldFile(path): ...

随机推荐

  1. ant编译apache-nutch-2.2.1结合mysql实现爬虫的安装配置全过程

    之前的数据抓取都是用的八爪鱼软件,老大突发奇想要我自己搞个爬虫来抓取数据,网上找找貌似apache的nutch比较合适,于是就开始安装这啥nutch. 对于一个linux零基础的人来说,还要先学学li ...

  2. 通向全栈之路——(5)git通三端

    一.在私有git服务中新建一个项目(码云):将电脑上id_rsa.pub(git公钥)拷贝至ssh下面中保存二.本地代码关联git:1.git全局设置:git config --global user ...

  3. fzu 2154 YesOrNo

    Problem 2154 YesOrNo Accept: 14    Submit: 29Time Limit: 1000 mSec    Memory Limit : 32768 KB Proble ...

  4. python可变对象与不可变对象

    可变/不可变对象定义 不可变对象 该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址. 可 ...

  5. (利用DOM)在新打开的页面点击关闭当前浏览器窗口

    1.在开发过程中我们前端的用户体验中有时候会要求点击一个按钮,关闭当前浏览器窗口.用html DOM就可做到. 2.注意:本次写法要求在新窗口中关闭. target="_blank" ...

  6. eventbus3-intellij-plugin插件搜不到

    一.eventbus3-intellij-plugin插件搜不到

  7. android中的textview显示汉字不能自动换行的一个解决办法

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_ ...

  8. linux yum 安装wget、gcc、ifconfig、vim、setup

    安装wgetyum -y install wget安装gcc c语言编译器yum -y install gcc安装ifconfigyum -y install net-tools.x86_64安装vi ...

  9. 0java之泛型解说

    1.集合中只能装入引用数据类型,不能装入基本数据类型.如,装入int类型的数值123会自动装箱. 2.开发人员装入集合的数据类型不确定,所以它被设计成可以装入所有的Object. 3.新的问题产生,装 ...

  10. CSS 小结笔记之文字溢出处理

    有时文字会溢出盒子,这时一般要对文字进行溢出处理.一般有以下三种处理方法: 1.word-break:normal | break-all |keep-all  normal 使用浏览器默认的换行 b ...