doc文件所占用空間更小。docx格式的文件本質上是一個ZIP文件,所以其實也可以把.docx文件直接改成.zip,解壓后,里面的
word/document.xml包含了Word文檔的大部分內容,圖片文件則保存在word/media里面。
python-docx不支持.doc文件,間接解決方法是在代碼里面先把.doc轉為.docx。
一、安裝包
pip3 install python-docx
二、創建word文檔
下面是在官文示例基礎上對個別地方稍微修改,並加上函數的使用說明
from docx importDocumentfrom docx.shared importInches
document=Document()#添加標題,並設置級別,范圍:0 至 9,默認為1
document.add_heading('Document Title', 0)#添加段落,文本可以包含制表符(\t)、換行符(\n)或回車符(\r)等
p = document.add_paragraph('A plain paragraph having some')#在段落后面追加文本,並可設置樣式
p.add_run('bold').bold =True
p.add_run('and some')
p.add_run('italic.').italic =True
document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')#添加項目列表(前面一個小圓點)
document.add_paragraph('first item in unordered list', style='List Bullet')
document.add_paragraph('second item in unordered list', style='List Bullet')#添加項目列表(前面數字)
document.add_paragraph('first item in ordered list', style='List Number')
document.add_paragraph('second item in ordered list', style='List Number')#添加圖片
document.add_picture('monty-truth.png', width=Inches(1.25))
records=(
(3, '101', 'Spam'),
(7, '422', 'Eggs'),
(4, '631', 'Spam, spam, eggs, and spam')
)#添加表格:一行三列#表格樣式參數可選:#Normal Table#Table Grid#Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6#Light List、Light List Accent 1 至 Light List Accent 6#Light Grid、Light Grid Accent 1 至 Light Grid Accent 6#太多了其它省略...
table = document.add_table(rows=1, cols=3, style='Light Shading Accent 2')#獲取第一行的單元格列表
hdr_cells =table.rows[0].cells#下面三行設置上面第一行的三個單元格的文本值
hdr_cells[0].text = 'Qty'hdr_cells[1].text = 'Id'hdr_cells[2].text = 'Desc'
for qty, id, desc inrecords:#表格添加行,並返回行所在的單元格列表
row_cells =table.add_row().cells
row_cells[0].text=str(qty)
row_cells[1].text =id
doc
查看了網上的各種方法,大部分還是接受將doc文件強制另存為docx文件(使用代碼轉換,而不是直接修改后綴),在讀取即可,需要另外安裝win32com模塊,注意就是直接使用 pip install win32com 安裝不成功,需要用
python -m pip install pypiwin32
即可,簡單使用如下
import docx
import win32com.client as wc
#doc文件另存為docx
word = wc.Dispatch("Word.Application")
doc = word.Documents.Open(r"F:\\***\\***\\append\\***.doc")
#上面的地方只能使用完整絕對地址,相對地址找不到文件,且,只能用“\\”,不能用“/”,哪怕加了 r 也不行,涉及到將反斜杠看成轉義字符。
doc.SaveAs(r"F:\\***\\***\\appendDoc\\***.docx", 12, False, "", True, "", False, False, False, False)#轉換后的文件,12代表轉換后為docx文件
#doc.SaveAs(r"F:\\***\\***\\appendDoc\\***.docx", 12)#或直接簡寫
#注意SaveAs會打開保存后的文件,有時可能看不到,但后台一定是打開的
doc.Close
word.Quit
path = "appendDoc/***.docx"
file = docx.Document(path)
for p in file.paragraphs:
print(p.text)