码迷,mamicode.com
首页 > 编程语言 > 详细

python操作word

时间:2020-04-08 21:06:32      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:text   内容   增加   article   tail   form   mes   idt   nts   

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

 

python操作word

标签:text   内容   增加   article   tail   form   mes   idt   nts   

原文地址:https://www.cnblogs.com/pu369/p/12660049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!