python-docx库 写入docx时中文不适配问题,中文异常问题解决办法。

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')
posted @ 2024-07-06 15:08  hermione1985  阅读(3)  评论(0编辑  收藏  举报