(二)表格篇(table)
(三)樣式篇(style)(本篇)
選你所需即可。下面開始正文。
在前兩篇中,我們已經解析出了paragraph和table,那么,如何把它們按順序組合在一起呢?畢竟,一般的word不會固定把表格和文字分開,而是混排在一起的。
答案是,沒辦法。
可能有的同學在看過前兩篇之后,已經親自動手去玩python-docx,并且發現了style這個東西。我本來也發現了。使用
可以獲取全部的樣式,并且用
可以看出,它屬于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本來也難以獨立成篇,我只是想吐槽一下當時走的彎路。
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請
點擊舉報。