python操作word
1、 先要安装第三方库 python-docx
。(处理doc和docx,但是doc易出问题)
pip install python-docx
2、生成一个word
#coding=utf-8 from docx import Document Doc = Document() Doc.save("myword.doc")
3、段落文本(字体、字号)、表格、图片
#coding=utf-8 from docx import Document from docx.shared import Pt,Cm,Inches from docx.oxml.ns import qn from docx.enum.style import WD_STYLE_TYPE from docx.enum.text import WD_LINE_SPACING import webbrowser #文档对象 Doc = Document() #添加一个中文段落 Doc.add_paragraph(u'这一行就当是标题吧!') #再添加一个中文段落 paragraph = Doc.add_paragraph(u'这里算是第一个段落了1111111111段落1') #paragraph中有runs,在第一段末尾增加一个run,内容为“设置字号” run = paragraph.add_run(u'设置字号、') run.font.size = Pt(24) #设置中文字体 run = paragraph.add_run(u'设置中文字体、') run.font.name=u'宋体' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') Doc.add_paragraph(u'我们在做文本测试1111111111111111111111111111111!') #插入表格 table = Doc.add_table(rows=2, cols=3) # 设置表格样式 table.style = 'Light List Accent 1' # 设置标题 title_cells = table.rows[0].cells for i in range(3): title_cells[i].text = "titles" + str(i) # 设置内容 for d in range(2): row_cells = table.add_row().cells for i in range(3): row_cells[i].text = "data"+str(i) Doc.add_page_break() #增加图像(此处用到图像image.bmp,请自行添加脚本所在目录中) Doc.add_picture('image.bmp', width=Inches(1.25)) Doc.save("demo.docx") #=============以下读取=========================== Doc = Document('demo.docx') #打开文件demo.docx #读取每段资料 l = [paragraph.text for paragraph in Doc.paragraphs]; #输出并观察结果,也可以通过其他手段处理文本即可 for i in l: #print(l) print("=======") #再打印一次第一段 #print(l[1]) #=============以下修改=========================== #将每段中的每个run中的第1个字体替换为字母A;(可以看到A的格式与run一致) for paragraph in Doc.paragraphs: runlist = paragraph.runs for i in range(len(runlist)): run =runlist[i] if run.text: rlen=len(run.text) if rlen > 1:#不是分页符或其它 print(rlen) print(run.text) newtxt=run.text[1:rlen] run.text="A"+newtxt #=============以下将每段后增加一个run,内容为“天”=========================== for paragraph in Doc.paragraphs: if len(paragraph.runs[0].text)>1:#不是分页符或其它 run = paragraph.add_run(u'天') run.font.name=u'仿宋' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋') #显示所有段落 for i, p in enumerate(Doc.paragraphs): print(str(i) + ": " + str(p.text)) #在文档第一个paragraphs的最前加个“地” Doc.paragraphs[0].text = "地" + Doc.paragraphs[0].text #在文档开头增加一个paragraphs Doc.paragraphs[0].insert_paragraph_before(u"新插入的段落") #在第一段后加个“人”,并设置字体 obj_styles = Doc.styles obj_charstyle = obj_styles.add_style('CommentsStyle', WD_STYLE_TYPE.CHARACTER) obj_font = obj_charstyle.font obj_font.size = Pt(10) obj_font.name = 'Times New Roman' Doc.paragraphs[0].add_run("人", style = 'CommentsStyle').bold = True # 在第一个表格的指定的单元格(第一行第一列)插入图片 run = Doc.tables[0].cell(0, 0).paragraphs[0].add_run() run.add_picture('image.bmp', width=Inches(2)) #下面主要演示修改格式==================== #对齐 Doc.paragraphs[0].paragraph_format.left_indent = Cm(5) Doc.paragraphs[1].paragraph_format.first_line_indent = Cm(2) #行高 Doc.paragraphs[1].paragraph_format.line_spacing_rule=WD_LINE_SPACING.AT_LEAST Doc.paragraphs[1].paragraph_format.line_spacing = Pt(88) Doc.save("demo.docx") webbrowser.open("demo.docx")
参考:https://blog.csdn.net/wcg541/article/details/100999756
https://zhuanlan.zhihu.com/p/98892274
https://blog.csdn.net/qianchenglenger/article/details/51582005
https://www.cnblogs.com/geek-arking/p/9300617.html
python-docx官方文档地址 https://python-docx.readthedocs.io/en/latest/index.html
https://blog.csdn.net/hu_zhenghui/article/details/77431018
http://www.voidcn.com/article/p-qppgqfei-btg.html
https://blog.csdn.net/shiyuzuxiaqianli/article/details/100147897