求一个参考答案,有没有比较简单的方法去设置个别几个字的字体?如何设置中文字体?

求一个参考答案,有没有比较简单的方法去设置个别几个字的字体?如何设置中文字体?

# coding:utf-8

from docx import Document
from docx.shared import Inches
from docx.shared import RGBColor
from docx.shared import Pt
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.style import WD_STYLE_TYPE

doc = Document()

style = doc.styles['Normal']
style.font.name = '微软雅黑'
style._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
# style.font.color.rgb = RGBColor(255,255,0)
style.font.size = Pt(15)

title = doc.add_heading('', 0)
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
title_style = title.style
title_style.font.name = '微软雅黑'
title_style._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
title.add_run('慕课网是谁')

p = doc.add_paragraph('我们是IT教育行业的')
p.style.font.name = '微软雅黑'
p1 = p.add_run('造梦者')
p1.font.color.rgb = RGBColor(255, 0, 0)
p.add_run(',也是前沿技术内容的')
p2 = p.add_run('创造者')
p2.font.color.rgb = RGBColor(255, 0, 0)
p.add_run('和')
p3 = p.add_run('传播者')
p3.font.color.rgb = RGBColor(255, 0, 0)
p.add_run('!')
p.add_run('\n体系课:\n1. Python全栈工程师\n2. Java工程师\n3. 前端工程师')

doc.add_page_break()

title2 = doc.add_heading('', 0)
title2_style = title2.style
title2_style.font.name = '微软雅黑'
title2_style._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
title2.add_run('学生信息')

title_list = ['序号', '姓名', '年龄', '身高']
student_list = [
    ('1', '张三', '20', '174'),
    ('2', '李四', '19', '167')
]

table = doc.add_table(rows=1, cols=4,style='Table Grid')
title_cells = table.rows[0].cells

for index, item in enumerate(title_list):
    title_cells[index].text = item

for data in student_list:
    row_cells = table.add_row().cells
    for i,d in enumerate(data):
        row_cells[i].text = d

doc.save('demo.docx')

设置特别几个字为红色的时候感觉代码很冗余,课程里面没有教怎么设置中文字体,直接设置font.name对中文无效

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!1、参考代下:

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import RGBColor, Pt
from docx.oxml.ns import qn
document = Document()
style = document.styles['Normal']
# 设置正文字体为微软雅黑
style.font.name = '微软雅黑'
style._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')
style.font.size = Pt(15)
# 添加标题,级别为0并居中显示
title = document.add_heading('', 0)
title.add_run('慕课网是谁')
p1 = document.add_paragraph('我们是IT教育行业的')
# 在段落后面追加文本,并可设置样式
_p = p1.add_run('造梦者')
_p.font.color.rgb = RGBColor(255, 0, 0)
p1.add_run(',也是前沿技术内容的')
_p = p1.add_run('创造者')
_p.font.color.rgb = RGBColor(255, 0, 0)
p1.add_run('和')
_p = p1.add_run('传播者')
_p.font.color.rgb = RGBColor(255, 0, 0)
p1.add_run('!')
document.add_paragraph('体系课:')
# 添加项目列表(前面数字)
document.add_paragraph('Python全栈工程师', style='List Number')
document.add_paragraph('Java工程师', style='List Number')
document.add_paragraph('前端工程师', style='List Number')
#第二页
document.add_page_break()
title = document.add_heading('学生信息', 0)
# 添加表格
table = document.add_table(3, 4, style='Table Grid')
data = [['序号', '姓名', '年龄', '身高'],
        ['1', '张三', '20', '174'],
        ['2', '李四', '19', '167']]
# 表头
table_header = table.rows[0].cells
for col_i in range(4):
    table_header[col_i].text = data[0][col_i]
# 录入数据
for row_i in range(1, 3):
    table_data = table.rows[row_i].cells
    for col_i in range(4):  # 遍历列
        table_data[col_i].text = data[row_i][col_i]
# 保存.docx文档
document.save('demo.docx')

2、个别设置字体需要单独设置个别字体,没有简单做法。参考如下:先将正文设置的字体取消,如下图红框内容。不同字体设置参考绿色框的内容

https://img1.sycdn.imooc.com//climg/64d05d9f09beea1507370609.jpg

https://img1.sycdn.imooc.com//climg/64d05dcb09151d7207500201.jpg

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师