设置字体格式后,中文字体生效

设置字体格式后,中文字体生效

问题描述:

设置字体格式后,中文字体生效

相关代码:

#coding:utf-8

from docx import Document
from docx.shared import Inches, RGBColor, Pt
from docx.enum.style import WD_STYLE_TYPE
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT


doc = Document()
for i in doc.styles:
    if i.type == WD_STYLE_TYPE.TABLE:
        print(i.name)
# 设置文本格式
style = doc.styles['Normal']
# 设置字体
style.font.name = "微软雅黑"
# 设置颜色
# col = style.font.color.rgb = RGBColor(255, 1, 1)
# 设置字体大小
style.font.size = Pt(15)

title = doc.add_heading('', 0)
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
_title = title.add_run("慕课网是谁")

# 创建段落
_paragraph = doc.add_paragraph()
_paragraph.add_run("我们是IT教育行业的")
_paragraph.add_run("造梦者").font.color.rgb = RGBColor(255, 1, 1)
_paragraph.add_run(",也是前沿技术内容的")
_paragraph.add_run("创造者").font.color.rgb = RGBColor(255, 1, 1)
_paragraph.add_run("和")
_paragraph.add_run("传播者").font.color.rgb = RGBColor(255, 1, 1)
# _paragraph.add_run("造梦者" + "创造者" + "传播者").font.color.rgb = RGBColor(255, 0, 0)
_paragraph.add_run("\n体系课:\n1. Python全栈工程师 \n2. Java工程师 \n3. 前端工程师")

# 分页
doc.add_page_break()
doc.add_heading("学生信息", 0)

# 创建表格
table_title = ['序号', '姓名', '年龄', '身高']

_table = doc.add_table(rows=1, cols=4, style="Table Grid")

title_cells = _table.rows[0].cells
for index, content in enumerate(table_title):
    title_cells[index].text = content

# 表格内容
datas = [['1', '张三', '20', '174'],
         ['2', '李四', '19', '167'],
         ['3', '王五', '18', '178']]

for d in datas:
    row_cells = _table.add_row().cells
    for index, content in enumerate(d):
        row_cells[index].text = content
if __name__ == '__main__':
    # 创建文件名为demo
    doc.save('demo.docx')

相关截图:

https://img1.sycdn.imooc.com//climg/6208ec800970db2317281276.jpg

正在回答 回答被采纳积分+1

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

1回答
好帮手慕美 2022-02-14 10:03:56

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

from docx.oxml.ns import qn

https://img1.sycdn.imooc.com//climg/6209b88309c1e44308280215.jpg

祝学习愉快!

  • 提问者 慕斯6116755 #1

    为什么使用style.font.name直接设置不会生效呢

    2022-02-14 13:35:34
  • 好帮手慕美 回复 提问者 慕斯6116755 #2

    同学,你好!使用style.font.name可以设置英文字体,对内容中的英文和数字是有效果的,对中文是没有效果的。

    祝学习愉快!

    2022-02-14 13:55:54
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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