求助老师 为什么我定义的样式 字体颜色什么的都不生效呢

来源:3-7 设置Word全局样式和文本样式

_WHOAMI_

2022-04-25 11:29:42

# coding:utf-8


from docx import Document
from docx.shared import Inches, Pt, RGBColor


'''初始化Word对象'''
document = Document()

'''定义Word的全局样式'''

'''样式'''
style = document.styles['Header']  # 创建样式对象

'''字体'''
style.font.name = '微软雅黑'

'''字体颜色'''
style.font.color.rgb = RGBColor(255, 0, 0)

'''字体大小'''
style.font.size = Pt(20)


'''添加标题'''
titleobj = document.add_heading('这是第一个标题\n', level=1)  # 创建标题对象
titleobj.add_run('321\n')  # 在标题中追加内容
titleobj.add_run('123')
document.add_heading('这是二级标题', level=2)


'''添加段落'''
paraobj = document.add_paragraph('这是一段内容') # 创建段落对象
paraobj.add_run('这是追加的内容\n')  # 追加的内容
paraobj.add_run('这个也是追加的的内容')
paraobj.add_run('我在添加一段内容')


'''添加图片'''
imageobj = document.add_picture('帅猴子.jpg', width=Inches(2), height=Inches(2))  # 创建图片对象, 并定义图片的宽和高


'''添加表格'''
tableobj = document.add_table(rows=1, cols=3)   # 创建表格对象  ,这是一个一行三列的表格
cells = tableobj.rows[0].cells  # 获取'行' 中的每一个单元格  表格的第一行就是rows[0] 第二行就是rows[1]
cells[0].text = 'name'   # 行 的第一个单元格就是0索引  每一行的第一个单元格就是cells[0]
cells[1].text = 'age'
cells[2].text = 'sex'

username = [
    ['小明', '14', '男'],
    ['小红', '13', '女'],
    ['小慕', '16', '男']
]

for u in username:
    row_cell = tableobj.add_row().cells
    row_cell[0].text = u[0]
    row_cell[1].text = u[1]
    row_cell[2].text = u[2]


row_cell1 = tableobj.add_row().cells
row_cell1[0].text = '小亮'
row_cell1[1].text = '16'
row_cell1[2].text = '男'



'''分页'''
document.add_page_break()
titleobj = document.add_heading('这是第二页的标题\n', level=1)  # 在第二页上添加标题



document.save('文本1.docx')

相关截图:

https://img.mukewang.com/climg/6266133909de7a0105780702.jpg

写回答

1回答

好帮手慕凡

2022-04-25

同学,你好!

1、将document.styles['Header']改为document.styles['Normal']

2、可以使用style.element.rPr.rFonts.set(qn('w:eastAsia'), u'字体名')使设置的中文字体生效;

from docx.oxml.ns import qn

https://img.mukewang.com/climg/6209b88309c1e44308280215.jpg

祝学习愉快~

0

0 学习 · 4469 问题

查看课程