day10 python操作Word

day10 python操作word文件
一、word文档的基本内容

注意:安装第三方库的时候装 python-docx

from docx import Document   # 导入第三方库
1.创建空白的Word文档
doc = Document()
2.添加标题
文档对象.add_heading(标题内容,level=级别,style=None)
注意:级别范围:0~9
doc.add_heading('一级标题',level=1)
doc.add_heading('二级标题', level=2)
...
3.添加正文段落
文档对象.add_paragraph(正文内容,style=None)
doc.add_paragraph('正文内容')
4.添加换页
文档对象.add_page_break()
doc.add_page_break()
5.添加表格
文档对象.add_table(行数,列数) —— 添加表格
table = doc.add_table(3, 4)  # 添加一个3行4列的表格
表格对象.cell(行下标, 列下标) - 获取表格中指定的单元格
cell1 = table.cell(0, 0)   # 获取(0,0)位置的单元格
单元格对象.text = 数据 - 修改单元格内容
cell1.text = '姓名'        # 将获取到的cell1单元格内容进行修改
6.添加图片
文档对象.add_picture(图片地址, width=None, height=None)
doc.add_picture('files/xxx.png')

保存

doc.save('files/demo1.docx')
二、设置文档中内容的样式
from docx import Document    # 导入第三方库
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn

注意:样式设置优先级问题:document < paragraph < heading < run

doc = Document()
h1 = doc.add_heading('高启强为什么解领带擦玻璃', level=1)
1.标题常用的样式
让标题内容在文档中居中显示
h1.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
设置标题的字体大小
h1.style.font.size = Pt(25)
设置标题的文字颜色
h1.style.font.color.rgb = RGBColor(95, 158, 160)
# 注意:标题设置字体名称无效
2.常用的段落样式

注意:设置在某一个段落上的样式会同时作用在所有的段落。

p1 = doc.add_paragraph('二刷狂飙的时候,高启强为什么解领带擦玻璃?其中有一段无声的镜头,什么也没说,又什么都说了)
1.设置字体名称
p1.style.font.name = '宋体'
# 注意:如果使用的字体是中文字体,必须加下面的代码
r = p1.style._element.rPr.rFonts
r.set(qn('w:eastAsia'), '宋体')
2.设置字体大小
p1.style.font.size = Pt(15)
3.设置字体颜色
p1.style.font.color.rgb = RGBColor(255, 0, 0)
4.设置字体加粗
p1.style.font.bold = True
5.字体倾斜
p1.style.font.italic = True
6.添加下划线
p1.style.font.underline = True
7.添加删除线
p1.style.font.strike = True
8.添加阴影效果
p1.style.font.shadow = True
3.run的用法

给word文档提供文字内容的时候有两种方式:

  1. 直接提供文字内容: doc.add_paragraph(文字内容)、doc.add_heading(文字内容)

  1. 通过run对象提供文字内容

h2 = doc.add_heading(level=2)
run1 = h2.add_run('大家都在搜')
run2 = h2.add_run('"高启强"')

p2 = doc.add_paragraph()
run3 = p2.add_run('解领带缠手可以砸碎玻璃打他,也可以像他一样')
run4 = p2.add_run('擦玻璃')
run5 = p2.add_run('。赵立冬也领会到了高启强的意思,开始以为要打他')

run4.font.bold = True
run3.font.color.rgb = RGBColor(0, 255, 0)

p3 = doc.add_paragraph('弟弟的死是自己心中永远的痛。')
4.段落间距相关样式

注意:段落间距相关样式只会作用在当前段落上

h3 = doc.add_heading('擦玻璃', level=2)
p4 = doc.add_paragraph('解领带缠手可以砸碎玻璃打他,也可以像他一样擦玻璃。赵立冬也领会到')
1.行间距(段落内)
p4.paragraph_format.line_spacing = 1.5
2.段前距离
p4.paragraph_format.space_before = Pt(30)
3.段后距离
p4.paragraph_format.space_after = Pt(40)
4.行首缩进
p4.paragraph_format.first_line_indent = Pt(50)
h4 = doc.add_heading('擦玻璃2', level=2)

doc.save('files/demo2.docx')  # 保存
三、设置主题样式
from docx import Document
from docx.enum.style import WD_STYLE_TYPE, WD_BUILTIN_STYLE
from docx.shared import Pt, Cm, RGBColor   # 需导入的第三方库
doc = Document()
styles = doc.styles     #  所有的主题样式

主题样式有三种:基于run添加的样式、基于paragraph、基于table

1.基于run的主题样式的使用
1.用法
h1 = doc.add_heading(level=1)
run1 = h1.add_run('hello world!', style='Subtle Reference')
run1.font.size = Pt(40)

p1 = doc.add_paragraph()
p1.add_run('hello world!', style='Subtle Emphasis')


doc.add_heading('1. 基于run添加的所有的主题名称对应的样式:')
2.将和run相关的所有的主题样式显示出来
for x in styles:
    if x.type == WD_STYLE_TYPE.CHARACTER:
        p = doc.add_paragraph()
        p.add_run('character(run) style is :'+ x.name,style = x.name)
2.基于paragraph的主题样式的用法
p2 = doc.add_paragraph('弟弟的死是自己心中永远的痛',style='Title')
doc.add_heading('2. 基于paragraph添加的所有的主题名称对应的样式:')
for x in styles:
    if x.type == WD_STYLE_TYPE.PARAGRAPH:
        doc.add_paragraph('paragraph style is:'+x.name,style=x.name)
3.基于table的主题的用法
doc.add_table(4, 3, style='Medium Grid 3 Accent 4')
doc.add_heading('2.基于table添加的所有的主题名称对应的样式:')
for x in styles:
    if x.type == WD_STYLE_TYPE.TABLE:
        p = doc.add_paragrapf('表格主题名称:'+ x.name)
        p.paragraph_format.space_before = Pt(50)
        doc.add_table(2,3,style=x.name)
doc.save('files/demo3.docx')   # 保存
四、表格的使用
from docx import Document    # 需导入的第三方库
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT
doc = Document()
1.添加表格
table = doc.add_table(3,4,style='Table Grid')
2.添加行和列
table.add_row()  # 在最下面添加一行
table.add_column(Pt(100))  # 在最右边添加一列,宽度是100像素
3.设置单元格内容
1.直接给单元格内容赋值
cell1 = table.cell(0,0)
cell1.text = '名字'
cell1.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
2.通过获取单元格的段落对象添加run来赋值
cell2 = table.cell(0,1)
p = cell2.paragraphs[0]
run1 = p.add_run('价格')
run2 = p.add_run('(元)')
4.设置表格样式
1.直接设置表格样式,会作用于整个表格
table.style.font.size = Pt(14)
table.style.font.color.rgb = RGBColor(100,89,10)
table.style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
2.基于单元格设置样式,必须基于单元格内容对应的run对象来设置
run1.font.color.rgb = RGBColor(255, 0, 0)
5.行高和列宽
1.设置每一行的高度
rows = table.rows       # 获取所有的行
cols = table.columns    # 获取所有的列
for row in rows:
    # 获取所有的单元格
    print(row._cells)
    row.cells[1].text = '200'
    # 获取行下标
    print(row._index)
    if row._index == 0:
        # 设置行高:行对象.height = 高度
        row.height = Pt(40)
        for cell in row.cells:
            cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
    else:
    	row.height = Pt(25)
        
        
for col in cols:
    # 获取一列中所有的单元格
    print(col.cells)
    col.cell[0].text = 'hello'
    # 获取列下标
    print(col._index)
doc.save('files/demo4.docx')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值