天天看點

python修改docx文檔的表格内中文字型

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm,Pt
from docx.oxml.ns import qn

document = Document('2.docx')

#讀取文檔的第一個表格資料
tables = document.tables[0]

#在第該表格3行1列的單元格内輸入“能幾日又中秋?as12A”
run = tables.cell(2,0).paragraphs[0].add_run(u'能幾日又中秋?as12A')

#輸入時預設華文琥珀字型
run.font.name = '華文琥珀'
#輸入字型大小預設30号
run.font.size = Pt(30)

r = run._element
#将輸入語句中的中文部分字型變為華文行楷
r.rPr.rFonts.set(qn('w:eastAsia'), '華文行楷')

#居中
tables.cell(1,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

#儲存
document.save('3.docx')
           

要點:

1、在同一個 單元格内連續使用  table.cell.paragraphs[0].add_run('XXX'),則預設為在單元格中附加文字,而非在該單元格内重建。

2、如果沒有這兩句,則無法改變單元格内的中文字型:

r = run._element

r.rPr.rFonts.set(qn('w:eastAsia'), '黑體')

3、run.font.name = '黑體'  

上述語句隻能修改acsii 代碼所包含的字元, 中文不可顯示。

綜合示範:

代碼:

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm,Pt
from docx.oxml.ns import qn

document = Document('2.docx')
tables = document.tables[0]

run = tables.cell(1,0).paragraphs[0].add_run(u'二十年重過南樓hellow,233')
run.font.name = '仿宋'
run.font.size = Pt(18)
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '仿宋')
tables.cell(1,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

run = tables.cell(1,0).paragraphs[0].add_run(u'柳下系船猶未穩as12A')
run.font.name = '黑體'
run.font.size = Pt(35)
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '黑體')

run = tables.cell(2,0).paragraphs[0].add_run(u'能幾日又中秋?as12A')
run.font.name = '華文琥珀'
run.font.size = Pt(30)
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '華文行楷')

document.save('3.docx')

           

運作後結果:

python修改docx文檔的表格内中文字型