⽤python来操作word⽂件(使⽤docx库)实例⼀:
from docx import Document
um.text import WD_ALIGN_PARAGRAPH
l.ns import qn # 中⽂格式
from docx.shared import Pt # 磅数
from docx.shared import Inches # 图⽚尺⼨
import time
today = time.strftime("%Y{y}%m{m}%d{d}", time.localtime()).format(y="年", m="⽉", d="⽇")
price = input("请输⼊今⽇价格:")
company_list = ["客户1", "客户2", "客户3", "客户4", "客户5", "客户6", "客户7", "客户8", "客户9", "客户10"]
for i in company_list:
document = Document()
document.styles["Normal"].font.name = u"微软雅⿊"
document.styles["Normal"].font.size = Pt(14)
# 设置⽂档的基础字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅⿊')
# 设置⽂档的基础样式
document.add_picture("d:/⽆标题.png", width=Inches(6))
# 在⽂件最上头插⼊图⽚作为⽂件红头,宽度为6英⼨
p1 = document.add_paragraph()
# 初始化建⽴第⼀个⾃然段
p1.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 对齐⽅式为居中,没有这句默认左对齐
run1 = p1.add_run("关于下达%s产品价格的通知" % (today))
# 这⾥是第⼀段的内容
run1.font.name = "微软雅⿊"
# 设置西⽂字体
run1._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅⿊')
# 设置中⽂字体
run1.font.size = Pt(21)
# 设置字体⼤⼩为21磅
run1.font.bold = True
# 设置加粗
p1.space_after = Pt(5)
# 设置段后距离5磅
p1.space_before = Pt(5)
# 设置段后距离5磅
p2 = document.add_paragraph()
run2 = p2.add_run(i + ": ")
# 这⾥是对客户的称呼
run2.font.name = "仿宋_GB2312"
run2._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
run2.font.size = Pt(16)
run2.font.bold = True
p3 = document.add_paragraph()
run3 = p3.add_run("    根据公司安排,为提供优质客户服务,我单位现将价格通知如下。 ")
run3.font.name = "仿宋_GB2312"
run3._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
run3.font.size = Pt(16)
run3.font.bold = True
table = document.add_table(rows=3, cols=3, )
table_run1 = ll(0,0).paragraphs[0].add_run("XXX产品报价表")
table_run1.font.name = u"⾪书"
table_run1.font.bold = True
table_run1._element.rPr.rFonts.set(qn('w:eastAsia'), u'⾪书')
p4 = document.add_paragraph()
p4.alignment = WD_ALIGN_PARAGRAPH.CENTER
run4 = p4.add_run("  (联系⼈:⼩杨电话:188********)  ")
run4.font.name = "仿宋_GB2312"
run4._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
run4.font.size = Pt(16)
run4.font.bold = True
document.add_page_break()
p5 = document.add_paragraph()
run4 = p5.add_run("此处是⼴告")
document.save("%s-价格通知.docx" % i)
效果图:
docx 库
⽂章结构:
  ⼀、docx 基本⽤,创建 docx ⽂件并添加数据
  ⼆、深⼊理解⽂本格式(format),并设置所格式属性(attribute)
  三、深⼊理解样式(styles),以及如何运⽤样式
  四、常⽤样式(style)⽰例
⼀、docx基本⽤法,创建docx ⽂件并添加数据
  官⽅⽂档:/en/latest/
python官方文档中文版  docx 可以操作 doxc 格式⽂件
  linux 安装 sudo pip install python_docx (不要安装错了,python_docx 是新版本,如果只是安装 docx 有些 API 会不匹配)  windows 安装pip install python_docx
  基本⽤法:
#!/usr/bin/env python
#coding: utf-8
from docx import Document
from docx.shared import Inches
#创建 Document 对象,相当于打开⼀个 word ⽂档
document = Document()
#向⽂档中添加⼀个标题,标题级别设置为0级
document.add_heading('This is title', level=0)
#向⽂档中添加⼀个段落,并将段落引⽤赋给变量 p
#使⽤ add_run ⽅法追加字段,并设置格式
p = document.add_paragraph('This is paragraph')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True
#添加标题和段落,采⽤不同的形式
document.add_heading('This is Heading, level 1', level=1)
document.add_paragraph('Intese 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(r"D:\picture\a.jpg", width=Inches(2.25))
#添加表格,填⼊表格内容
table = document.add_table(rows=2, cols=2)
#保存⽂本
document.save('demo.docx')
  效果展⽰:
<--------------------            start            -------------------->
<--------------------            end            -------------------->
⼆、深⼊理解⽂本格式(format),并设置所格式属性(attribute)
  根据官⽅⽂档所述,word 中主要有两种⽤⽂本格式等级:块等级(block-level)和内联等级(inline-level)
  word 中⼤部分内容都是由这两种等级的对象组成的
  块等级(block-level):
    段落是 word ⽂件中的主要块对象(block-level object)
    块等级项(block-level item)主要任务是将⽂本格式从左边界向右边界展⽰(flows);\
    对于段落⽽⾔,边界就是分段标识,或者是⽂本的列边界
    列表(table)也是块对象(block-level object)
  内联等级(inline-level): 
    内联对象(inline-level object)是块对象(block-level object)的组成部分
    块对象的所有内容都包含在内联对象中,⼀个块对象由⼀个或多个内联对象组成
    run 是常⽤的内联对象,例如:
p = document.add_paragraph('This is paragraph')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True
    这个例⼦中⼀个段落(块对象)包含三个 run(内联对象),每⼀个 run 都设置有不同属性
  块等级,及其属性
    块对象⼀般包括:段落(paragraph)、图⽚(inline picture)、表(table)、标题(heading)、有序列表(numbered lists)、⽆序列表(bullets lists)
    块对象的属性指定了块对象所在的位置,例如缩进、段间距离
    常⽤属性:alignment
um.text import WD_ALIGN_PARAGRAPH
paragraph = document.add_paragraph("hello")
paragraph_format = paragraph.paragraph_format
#设置段落⽔平居中对齐
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
#WD_ALIGN_PARAGRAPH 存储了多种对齐格式,例如:
#WD_ALIGN_PARAGRAPH.LEFT,左对齐;默认左对齐
#WD_ALIGN_PARAGRAPH.RIGHT,右对齐
 indent,缩进
from docx.shared import Inches
from docx.shared import Pt
#设置段落从左开始缩进,使⽤Inches来衡量
paragraph_format.left_indent = Inches(0.5)
#设置段落从右开始缩进,使⽤Pt来衡量
paragraph_format.right_indent = Pt(20)
#设置段落第⼀⾏缩进,可以与上两个缩进叠加
paragraph_format.first_line_indent = Inches(0.5)
space,⾏间距
from docx.shared import Pt
#设置与上⼀段间隔 Pt(5)
paragraph.space_after = Pt(5)
#设置与下⼀段间隔 Pt(10)
paragraph.space_before = Pt(10)
 内联等级,及其属性 
    内联对象⼀般包括:⽂字、句⼦、段落
    内联对象的属性指定了字体,例如粗体(bold)、斜体(italic)、⼤⼩(size)等等
    常⽤属性:name and size
document = Document()
paragraph = document.add_paragraph()
run = paragraph.add_run("hellohellohello")
font = run.font
#设置字体样式
font.name = 'Calibri'
#设置字体⼤⼩
font.size = Pt(55)
 bold 、underline and underline
#设置为斜体
font.italic = True
#不设置下划线
font.underline = False
#设置粗体为继承上⼀个字体的格式
font.bold = None
#这⼀类属性,每个有三种状态
#True 为使⽤属性;False 为不使⽤属性;None 默认属性继承⾃上⼀个字体
#此外,underline 属性还可以设置值,例如
font.underline = WD_UNDERLINE.DOT_DASH
color
#以RGB⽅式设置颜⾊
from docx.shared import RGBColor
#使⽤内建主题设置颜⾊
um.dml import MSO_THEME_COLOR
三、深⼊理解样式(styles),以及如何运⽤样式
  在 word 中,样式包括:段落样式(paragraph styles)、字符样式(character styles)、表样式(table styles)、列表样式(numbering styles)  样式类似于前端开发的 CSS,⼀处定义,处处使⽤
  docx 库内的 styles 样式不包含 word 中全部的样式,有⼀些还在开发中,但是基本够⽤  Document 的属性 styles,包含了所有 docx 提供的可⽤样式 
  选取段落可⽤样式
#显⽰所有段落样式
um.style import WD_STYLE_TYPE
styles = document.styles
paragraph_styles = [
s for s in styles pe == WD_STYLE_TYPE.PARAGRAPH
]
for style in paragraph_styles:
print(style.name)
#styles 为 Document 的属性,style 为段落的属性
#除了段落(paragraph),还有 run,表(table)有 style 属性
  段落设置样式
document = Document()
#从styles中选取样式
paragraph = document.add_paragraph()
paragraph.style = document.styles['Heading 1']
#⽤样式名称直接赋值
paragraph2 = document.add_paragraph()
paragraph2.style = 'List Bullet'
#在创建段落时赋值
paragraph = document.add_paragraph(style='Body Text')
  定义样式(style)中的字符格式(character format)
    定义样式中的字符格式后,所有运⽤此样式的段落都有相应的字符格式
document = Document()
#从样式库中选取 'Normal' 样式,并提取 'Normal' 样式的字符属性
style = document.styles['Normal']
font = style.font
#设置样式中的字符属性,操作⽅法和上⾯改变内联对象属性⽅法⼀致
font.name = "Microsoft YaHei UI"
font.size = Pt(50)
#将设置好字符属性的样式运⽤到段落中
p = document.add_paragraph("change font attribution", style = 'Normal')
  定义样式(style)中的段落格式(paragraph format)
    定义样式中的段落格式后,所有运⽤此样式的段落都有相应的段落格式
document = Document()
styles = document.styles
#选取 style,并设置 style 中的段落格式
style = styles['Heading 2']
para_format = style.paragraph_format
para_format.left_indent = Pt(20)
para_format.widow_control = True
#将设置好段落格式的 style 运⽤到段落中
p = document.add_paragraph('This is Heading, level 1', style = style)
  简单总结
    ⽂章第⼆部分直接设置段落的格式(paragraph.format),字符的格式(run.font)    在这⼀部分,运⽤了 style 对象,统⼀设置了段落格式、字符格式
    ⼀旦 style 对象设置好了以后,可以多次反复利⽤
    style 对象是从⽂件对象中提取(document.styles)的,docx 提供的 Style 类对象四、常⽤样式(style)⽰例
  段落样式

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。