python处理word文档格式_用python解析word文件(三):style

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

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

在前两篇中,我们已经解析出了paragraph和table,那么,如何把它们按顺序组合在一起呢?毕竟,一般的word不会固定把表格和文字分开,而是混排在一起的。

答案是,没办法。

可能有的同学在看过前两篇之后,已经亲自动手去玩python-docx,并且发现了style这个东西。我本来也发现了。使用

docx.styles

可以获取全部的样式,并且用

style.type

可以看出,它属于paragraph还是table。那么,如果我这样……

for s indocx.styles:if s.type ==WD_STYLE_TYPE.PARAGRAPH:print(s.text)elif s.type ==WD_STYLE_TYPE.TABLE:for row ins.rows:for cell inrow.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本来也难以独立成篇,我只是想吐槽一下当时走的弯路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值