python-docx設置中文字體

2020-12-11 小梁學編程

在python-docx包中對WORD文檔字體的設置要使用font類,只需要更改font.name屬性就可以了。然而,對於中文字體的設置遠不是這麼簡單。

01一般情況下的字體設置

代碼如下

from docx import Document # 導入包document = Document() # 新建一個paragraph1 = document.add_paragraph()run = paragraph1.add_run('aBCDefg這是中文')font = run.fontfont.name = '宋體'document.save('test.docx')運行後test.docx效果為:

字體設置的一般方式

這種形式設置字體是設置字體的一般方法,只對西文字體有效,對中文字體無效

02解決方案

為了解決中文字體設置無效的問題,有的網友提出方案

from docx import Document # 導入docx包from docx.oxml.ns import qndocument.styles['Normal'].font.name = u'宋體'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') # 將段落中的所有字體paragraph1 = document.add_paragraph() # 添加一個段落run = paragraph1.add_run(u'aBCDefg這是中文') # 段落內增加內容1document.save('test.docx') # 存儲文件效果為:

解決方案運行效果

使用了python-docx包中的樣式,藉助樣式中的字符類型"eastAsia",將字符設置中文字體,宋體。代碼中更改了「Normal」樣式,確實是將段落的輸入的內容設置成了「宋體」,但是,存在以下不足:

由於修改了全局樣式「Normal」,所以將所有的中文字符都設置成了宋體,不能設置其他的中文字體,如:楷體等。由於對全局的中文字體起作用,如果要將段落內的個別中文字設置「宋體」則無法實現

03改進的方案

為此,筆者將代碼做如下修改:

from docx import Document # 導入Documentfrom docx.oxml.ns import qn # 導入qnfrom docx.enum.style import WD_STYLE_TYPEdocument = Document() # 新建word文檔style_song = document.styles.add_style('Song', WD_STYLE_TYPE.CHARACTER)style_song.font.name = '宋體'document.styles['Song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')paragraph1 = document.add_paragraph() # 添加新段落run = paragraph1.add_run(u'aBCDefg這是中文', style='Song')font = run.font # 獲取字符的字體font.name = 'Cambira'run = paragraph1.add_run(u'aBCDefg這是中文') # 第一個段落內增加內容document.save('test.docx') # 存儲WORD文檔運行後docx文件效果為:

改進方案前段字的設置效果
改進方案後段字的設置效果

前段的字符,英文字符字體設置成了'Cambira',中文字符的字體設置了宋體。後段的字體為默認字體。實現了對段落中的任意字符設置成中文

04再次改進的方案

當然如果還要實現在段落中有些中文字符設置「楷體」,「隸書」等多種字體,還需要對以上程序進行完善。

document = Document() # 新建docx文檔style_song = document.styles.add_style('Song', WD_STYLE_TYPE.CHARACTER) # 設置Song字樣式style_song.font.name = '宋體'document.styles['Song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') # 將段落中的所有字體style_song = document.styles.add_style('Kai', WD_STYLE_TYPE.CHARACTER)style_song.font.name = '楷體'document.styles['Kai']._element.rPr.rFonts.set(qn('w:eastAsia'), u'楷體') # 將段落中的所有字體style_song = document.styles.add_style('Lishu', WD_STYLE_TYPE.CHARACTER)style_song.font.name = '隸書'document.styles['Lishu']._element.rPr.rFonts.set(qn('w:eastAsia'), u'隸書') # 將段落中的所有字體paragraph1 = document.add_paragraph() # 添加段落run = paragraph1.add_run(u'aBCDefg這是中文', style='Song') # 設置宋體樣式font = run.font #設置字體font.name = 'Cambira' # 設置西文字體paragraph1.add_run(u'aBCDefg這是中文', style='Kai').font.name = 'Cambira'paragraph1.add_run(u'aBCDefg這是中文', style='Lishu').font.name = 'Cambira'運行後效果為:

再次改進方案前段效果
再次改進方案中段效果
再次改進方案後段效果

文檔中的文字分成前、中、後等三段,前段中的英文和中文的字體分別是'Cambira'和「宋體」,中段為'Cambira'和「楷體」,後段為'Cambira'和「隸書」。實現了對段落中的任意字符設置成任意中文字體,至此可以愉快地使用python-docx包設置中文字體了。

相關焦點

  • python-docx字體設置
    字體設置界面而在python-docx包中設置字體主要使用docx.text.run類中的Font類來實現。中文字體設置的WORD文檔的效果在上述代碼中使用樣式設置中文字體,要先增加一個樣式「Song」,在樣式中將w:eastAsia類型的字符設置成「宋體」,將其中的西文字體也設置成「宋體
  • python-docx頁面設置
    筆者將詳細敘述使用python-docx包中對docx文檔頁面設置功能的實現,最後製作了思維導圖。頁面大小在python-docx包中要使用section.page_width和section.page_height屬性來實現頁面大小的讀取和設置。
  • python-docx段落設置
    段落設置界面在python-docx包中可以通過paragraph. alignment和paragraph.paragraph_format進行設置分別對應於了python-docx包docx.text.parfmt.ParagraphFormat中的left_indent、right_indent和first_line_indent屬性。
  • Python自動化辦公(內容)
    操作pdf;python使用python-docx操作word;python使用python-pptx操作PPT;python如何自動收發郵件;python製作電話號碼歸屬地查詢工具;一:python1)修改表格中的內容4、批量調整字體和樣式1)修改字體樣式2)獲取表格中格子的字體樣式3)設置對齊樣式4)設置邊框樣式
  • word批量doc轉docx格式-python
    今天想要實現一個功能是將word內容轉換成HTML,查看了網上的代碼,還是比較簡單的,python中的PyDocX類庫可以實現功能。但是存在一個問題,就是word2003版本文檔後綴是.doc,在後期版本中後綴是.docx。
  • Word如何同時設置中文和英文兩種字體?設置中文字體時英文不變?
    我們在比較正規的文檔是要求中文宋體,英文羅馬字體的,如果將其全選中英文會同時變化,所以下面小編就大家快捷的方法吧!1.我們打開文檔能夠看到有中文和英文兩種文字。2.常規操作是按Ctrl+A全選文字,然後點擊左上角的字體,改為宋體。3.這樣我們就發現英文也改為了宋體,這樣就需要選兩次。4.下面同時操作,先將文字全選,再按Ctrl+D,打開字體面板。
  • 聊聊python 辦公自動化之 Word(中)
    基本信息我們同樣使用 python-docx 這個依賴庫來對 Word 文檔進行讀取。首先我們來讀取文檔的基本信息,它們分別是:章節、頁邊距、頁眉頁腳邊距、頁面寬高、頁面方向等。在獲取文檔基礎信息之前,我們通過文檔路徑構建一個文檔對象 Document。
  • word字體設置:如何為常用字體設置快捷鍵
    *********在使用Word撰稿時,如果對文中使用的字體做了硬性的要求,那麼,我們每次就需要手工修改字體。而在編輯某些Word文檔過程中,如果對文中使用的字體沒有做硬性的要求,那麼,在設置字體時,我們通常會設置為自己喜歡的字體。
  • 慢步python,你苦苦找尋的python中文使用手冊在哪裡?這裡有答案
    #學習難度大python對大家來說,應該算是相對新的程式語言。即使這樣,我們學習python的道路依舊困難重重。問題在,相關的學習資料不夠系統。初學者使用手冊像以前剛開始使用電視、手機一樣,都有一本使用說明書,即使用手冊。
  • 李亞濤:python中文如何轉換成拼音?
    大家好,今天給大家分享一個我之前寫程序遇到的一個問題,就是我在採集某房產信息的時候,由於欄位非常多,有將近100多個,而且很多欄位是相互關聯的我採集是直接導入到資料庫,為了防止重複,以及設置一個唯一的索引,需要把中文轉換為拼音再進行拼接才比較方便
  • 《英雄聯盟手遊》中文設置步驟教程 如何設置中文
    導 讀 現在英雄聯盟手遊已經正式的上線公測,但是國內暫時還沒有開,玩家應該都是使用的外服,使用外服對於很多玩家來說最大的問題就是看不懂,很多都是直接顯示的英文或者日文,所以大家都想知道英雄聯盟手遊怎麼設置中文
  • 賽博朋克2077怎麼設置中文 中文界面設置方法
    賽博朋克2077怎麼設置中文,中文界面設置方法。我們今天要和大家分享的內容就是有關,賽博朋克2077怎麼設置中文的相關推薦。接下來就讓我們一起來看看,賽博朋克2077這款遊戲中文界面怎麼設置吧!
  • 正當防衛4怎麼設置中文?win10中文設置教程[多圖]
    正當防衛4怎麼設置中文?很多玩家朋友在win10系統中想要設置正當防衛4的中文界面,但是卻不知道具體該怎麼操作,為了幫助大家在正當防衛4遊戲中體驗到中文,下面小編就為大家分享關於正當防衛4怎麼設置中文?中文設置win10教程,還不知道怎麼操作的朋友們一起來看看吧!
  • 《lol手遊》設置頁面中文翻譯圖一覽 設置頁面中文對照表一覽
    lol手遊設置頁面翻譯 官方的中文版本需要等到2020年12月臺服開放或者是後續國服開放後才會有對應的語言選項出現,目前玩家僅能夠體驗外服版本,建議使用英文或者日文版本來進行遊戲,這樣理解起來會相對容易一些。
  • 用Python將微信熱文轉換成Word文檔 | 神級操作
    2、設計代碼,步步分析這一步我們需要開始編寫代碼了,python-docx是一個生成和處理docx的第三方庫,使用pip install python-docx 一鍵下載需要用到的第三方庫有,python-docx,bs4(用於html解析處理)from docx import
  • 英雄聯盟手遊臺服怎麼設置簡體中文 臺服簡體中文設置攻略
    ------------------------------------- 英雄聯盟手遊臺服怎麼設置簡體中文?臺服可以設置簡體中文嗎?臺服在哪裡換語言?
  • 《英雄聯盟》手遊日服怎麼設置語言 日服設置中文方法分享
    導 讀 現在使用英雄聯盟手遊的大多數國人都會選擇註冊日服,如果使用日服的話,在遊戲中將會顯示日語,這樣大家看起來就會比較麻煩,尤其是不熟悉日語的人壓根就看不懂,非常影響遊戲體驗,那怎麼將日服的遊戲帳號設置成中
  • python入門教程06-01(python語法入門之字符編碼)
    解釋器執行文件的流程以python test.py為例,執行流程如下#階段1、啟動python解釋器,此時就相當於啟動了一個文本編輯器#階段2、python解釋器相當於文本編輯器,從硬碟上將test.py的內容讀入到內存中#階段3、python解釋器解釋執行剛剛讀入的內存的內容,開始識別python語法
  • Python繪圖筆記:繪製四色散點圖和誤差條形圖
    ax.scatter(x, y, c=color, s=scale, label=color, alpha=0.3, edgecolors='none')#設置圖例和網格線ax.legend()ax.grid(True)plt.show()2.填充標記#python2裡面,dict.items返回的是數組,six.iteritems(dict
  • 英雄聯盟手遊中文設置方法 英雄聯盟手遊中文漢化界面
    中文設置方法最近玩英雄聯盟手遊的玩家都在問,在外服中,中文怎麼設置?英雄聯盟手遊目前還沒有開啟中國大陸地區的測試,國內玩家雖然可以參與外服測試,但還是會因為語言問題影響體驗。下面就是編編為大家帶來的lol手遊界面漢化教程圖文了,一起來看看吧!英雄聯盟手遊中文怎麼設置