文章目录
强大的学习官网:https://python-docx.readthedocs.io/en/latest/index.html
一、简单入门
from docx import Document
from docx.shared import Inches
document = Document() # 打开一个基于默认“模板”的空白文档
document.add_heading('Document Title', 0) # 添加标题
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(
'first item in ordered list', style='List Number'
)
document.add_picture('./gggg/001.png', width=Inches(1.25)) # 插入图片(默认居左)
records = (
(3, '101', 'Spam'),
(7, '422', 'Eggs'),
(4, '631', 'Spam, spam, eggs, and spam')
)
table = document.add_table(rows=1, cols=3) # 添加表
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 in records: # for循环将records内容赋值到单元格内
row_cells = table.add_row().cells
row_cells[0].text = str(qty)
row_cells[1].text = id
row_cells[2].text = desc
document.add_page_break() # 添加分页符
document.save('./demo.docx') # 保存文件
效果展示:
二、读取分析docx
from win32com import client as wc
import docx
def read_docx(docx_path):
if docx_path[-4:] == '.doc':
docx_path= doSaveAas(docx_path)
file = docx.Document(docx_path)
print("段落数:" + str(len(file.paragraphs))) # 每个回车隔离一段
for para in file.paragraphs: # 输出每一段的内容
print(para.text)
for i in range(len(file.paragraphs)): # 输出段落编号及段落内容
print("第" + str(i) + "段的内容是:" + file.paragraphs[i].text)
def doSaveAas(docx_path):
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(docx_path) # 目标路径下的文件
doc.SaveAs(docx_path[:-4]+'.docx', 12, False, "", True, "", False, False, False, False) # 转化后路径下的文件
doc.Close()
word.Quit()
return docx_path[:-4]+'.docx'
'''
段落数:5
问题分析:
python利用python-docx (0.8.6)库可以读取.docx文件或.txt文件,且一路畅通无阻,而对.doc文件本身python是无能为力的,那有很多同学就不服气,我手动把.doc文件的后缀名改为.docx或.txt不就解决问题了吗?答案是不能的,简单修改后缀名,那么文件就被你玩坏了,别说打不开,就是打开也是天书啊(乱码)。python无法操作.doc文件是他的先天不足,但是我们不要钻牛角尖一定要在互联网上找到一种源码直接读取.doc文件,一调用就好了,但是不幸的是,你可能在网上也找不到解决方案。正当我一筹莫展之时,我将.doc文档利用手动的方式“另存为”.docx文档,
就能够成功打开转化后的.docx文档,于是我就尝试利用代码方式完成这个手动的“另存为”功能,问题得以解决。
第0段的内容是:问题分析:
第1段的内容是:python利用python-docx (0.8.6)库可以读取.docx文件或.txt文件,且一路畅通无阻,而对.doc文件本身python是无能为力的,那有很多同学就不服气,我手动把.doc文件的后缀名改为.docx或.txt不就解决问题了吗?答案是不能的,简单修改后缀名,那么文件就被你玩坏了,别说打不开,就是打开也是天书啊(乱码)。python无法操作.doc文件是他的先天不足,但是我们不要钻牛角尖一定要在互联网上找到一种源码直接读取.doc文件,一调用就好了,但是不幸的是,你可能在网上也找不到解决方案。正当我一筹莫展之时,我将.doc文档利用手动的方式“另存为”.docx文档,
第2段的内容是:
第3段的内容是:就能够成功打开转化后的.docx文档,于是我就尝试利用代码方式完成这个手动的“另存为”功能,问题得以解决。
第4段的内容是:
'''
参考与鸣谢
http://www.bubuko.com/infodetail-2125795.html
https://www.cnblogs.com/rencm/p/6285304.html
https://blog.csdn.net/qq_41262248/article/details/81240163