求一个参考答案,有没有比较简单的方法去设置个别几个字的字体?如何设置中文字体?
来源:3-9 自由编程
冰心本燃
2023-08-04 14:45:50
# 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、个别设置字体需要单独设置个别字体,没有简单做法。参考如下:先将正文设置的字体取消,如下图红框内容。不同字体设置参考绿色框的内容
祝学习愉快~
相似问题
回答 1
回答 1