python-docx库
写入docx时中文不适配问题,中文异常问题解决办法。
通过以下方法可以成功将正文修改为宋体字体。这个是全文设置。
from docx.oxml.ns import qn doc= Document() doc.styles['Normal'].font.name = u'宋体' doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
下面的方法,还未尝试,解决局部设置问题。。。待测试
from docx import Document
from docx.oxml.ns import qn
from docx.enum.style import WD_STYLE_TYPE
document = Document()
# 直接设置中文字体,对中文无效
paragraph1 = document.add_paragraph()
run = paragraph1.add_run('aBCDefg这是中文')
font = run.font
font.name = '宋体'
# 方法1 直接修改一个已有样式的所有文字的样式
style = document.styles['Normal']
style.font.name = 'Times New Roman' # 必须先设置font.name
style.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
paragraph1 = document.add_paragraph()
run = paragraph1.add_run('修改Normal,修改所有字体')
# 方法2 直接设置文字
paragraph1 = document.add_paragraph()
run = paragraph1.add_run('这是直接设置文字的格式 仿宋_GB2312')
run.font.name ='宋体' # 必须先设置font.name, 只对英文文有效
# 对中文设置的方法:
run.element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')
# 方法3 新建样式
style_song = document.styles.add_style('Song', WD_STYLE_TYPE.CHARACTER)
style_song.font.name = 'Times New Roman'
# 设置中文字体
style_song.element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
paragraph1 = document.add_paragraph() # 添加段落
paragraph1.add_run(u'方法3 中文字体黑体,英文字体Times New Roman', style='song')
标签:中文,docx,run,适配,style,add,paragraph1,font
From: https://www.cnblogs.com/hermione1985/p/18287280