牛逼,竟然可以用 Python 操作 Word 文檔,這么多的騷操作!

pip?install?pypiwin32
from?win32com.client?import?Dispatch
app?=?Dispatch('Word.Application')
#?新建word文檔
doc?=?app.Documents.Add()
app.Visible?=?1

#?運(yùn)行下句代碼后,s獲得新建文檔的光標(biāo)焦點(diǎn),也就是圖中的回車符前
s?=?app.Selection
#?用“Hello,?World!“替換s代表的范圍的文本
s.Text?=?'Hello,?world!'

s.Text可以查看或者設(shè)置s選擇區(qū)域的文本。Word對象模型中很多對象都有默認(rèn)屬性,Text就是Selection的默認(rèn)屬性,類似python的__str__方法。運(yùn)行s()調(diào)用s的默認(rèn)屬性,此處等于于運(yùn)行了s.Text。s()

#?如何獲得
app?=?win32com.client.Dispatch('Word.Application')
#?如何獲得
#?新建文檔
doc?=?app.Documents.Add()
#?打開已有文檔
doc?=?app.Documents.Open('你的Word文件路徑')
如何獲得
s?=?app.Selection



如何使用Selection輸入
#?替換當(dāng)前選擇
s.Text?=?'Hello,?world!'
#?輸入
s.TypeText('Hello,?world!')
#?把當(dāng)前選擇復(fù)制到剪貼板
s.Copy()
#?粘貼剪貼板中的內(nèi)容
s.Paste()
Text:輸入的文本(前例中選區(qū)為'Hello, world!');TypeText:文本后的插入點(diǎn)(前例中選區(qū)為!后的插入點(diǎn))。如何變更Selection
#?使用Start,End指定字符范圍
s.Start?=?0
s.End?=?n
# s從第0個(gè)字符(第1個(gè)字符前的插入點(diǎn))到第n個(gè)字符。
#?漢字是每字為1字符
#?相當(dāng)于按下Delete鍵
s.Delete()?
#?相當(dāng)于按下Ctrl+A
s.WholeStory()?
#?向左移動
s.MoveLeft()
#?向右移動2個(gè)字符,第1個(gè)參數(shù)是移動單位WdUnits,見下圖
s.MoveRight(1,?2)


如何獲得
r?=?doc.Range()
#?或
r?=?s.Range()
如何使用
如何獲得
font?=?s.Font
#?或
font?=?r.Font
如何使用
#?字體設(shè)置為仿宋,電腦上必須安裝有該字體
font.Name?=?'仿宋'
#?字號設(shè)置為三號
font.Size?=?16
ParagraphFormat對象:段落格式。用來設(shè)置段落格式,包括對齊、縮進(jìn)、行距、邊框底紋等。
如何獲得
pf?=?s.ParagraphFormat
#?或
pf?=?r.ParagraphFormat
如何使用
#?左、中、右?對齊分別為0,?1,?2,其他對齊方式見.NET?文檔中的ParagraphFormat
pf.Alignment?=?0
#?單倍、1.5倍、雙倍行距分別為0,?1,?2,其他見ParagraphFormat文檔
pf.LineSpacingRule?=?0
#?指定段落的左縮進(jìn)值為21磅。
pf.LeftIndent?=?21
如何獲得
ps?=?doc.PageSetup
#?或
ps?=?s.PageSetup
#?或
ps?=?r.PageSetup
如何使用
#?上邊距79磅?
ps.TopMargin?=?79
#?頁面大小,A3、A4分別為6,7
ps.PageSize?=?7
如何獲得
#?只能通過文檔獲得
styles?=?doc.Styles
如何使用
#?返回正文樣式
normal?=?styles(-1)
#?修改正文樣式的字體字號
normal.Font.Name?=?'仿宋'
normal.Font.Size?=?16
app?=?win32com.client.Dispatch('word.application')
app.Visible='True'?
#?讓word程序可見,這樣在交互命令行做的修改就可以實(shí)時(shí)顯示
doc?=?app.Documents.Open('你的桌面路徑/test.docx')?
#?word文件放在桌面方便手動修改
from?win32com.client?import?Dispatch?#需要安裝的是pypiwin32模塊
app=Dispatch('Word.Application')
doc?=?app.Documents.Open('你的word文檔路徑')
#?頁面設(shè)置
cm_to_points?=?28.35?#?1厘米為28.35磅
#?國家公文格式標(biāo)準(zhǔn)要求是上邊距版心3.7cm
#?但是如果簡單的把上邊距設(shè)置為3.7cm
#?則因?yàn)槲谋镜牡谝恍斜旧碛行芯?/span>
#?會導(dǎo)致實(shí)際版心離上邊緣較遠(yuǎn),上下邊距設(shè)置為3.3cm
#?是經(jīng)過實(shí)驗(yàn)的,可以看看公文標(biāo)準(zhǔn)的圖示
#?版心指的是文字與邊緣距離
doc.PageSetup.TopMargin?=?3.3*cm_to_points??
#?上邊距3.3厘米
doc.PageSetup.BottomMargin?=?3.3*cm_to_points??
#?下邊距3.3厘米
doc.PageSetup.LeftMargin?=?2.8*cm_to_points??
#?左邊距2.8厘米
doc.PageSetup.RightMargin?=?2.6*cm_to_points??
#?右邊距2.6厘米
#?設(shè)置正常樣式的字體
#?是為了后面指定行和字符網(wǎng)格時(shí)
#?按照這個(gè)字體標(biāo)準(zhǔn)進(jìn)行
doc.Styles(-1).Font.Name?=?'仿宋'?
#?word中的“正常”樣式字體為仿宋
doc.Styles(-1).Font.NameFarEast?=?'仿宋'?
#?word中的“正常”樣式字體為仿宋
doc.Styles(-1).Font.NameAscii?=?'仿宋'
#?word中的“正常”樣式字體為仿宋
doc.Styles(-1).Font.NameOther?=?'仿宋'?
#?word中的“正常”樣式字體為仿宋
doc.Styles(-1).Font.Size?=?16?
#?word中的“正常”樣式字號為三號
doc.PageSetup.LayoutMode?=?1?
#?指定行和字符網(wǎng)格
doc.PageSetup.CharsLine?=?28?
#?每行28個(gè)字
doc.PageSetup.LinesPage?=?22?
#?每頁22行,會自動設(shè)置行間距
#?頁碼設(shè)置
doc.PageSetup.FooterDistance?=?2.8*cm_to_points??
#?頁碼距下邊緣2.8厘米
doc.PageSetup.OddAndEvenPagesHeaderFooter?=?0?
#?首頁頁碼相同
doc.PageSetup.OddAndEvenPagesHeaderFooter?=?0?
#?頁腳奇偶頁相同
w?=?doc.windows(1)??
#?獲得文檔的第一個(gè)窗口
w.view.seekview?=?4?
#?獲得頁眉頁腳視圖
s?=?w.selection??
#?獲取窗口的選擇對象
s.headerfooter.pagenumbers.startingnumber?=?startingnumber??
#?設(shè)置起始頁碼
s.headerfooter.pagenumbers.NumberStyle?=?0??
#?設(shè)置頁碼樣式為單純的阿拉伯?dāng)?shù)字
s.WholeStory()?
#?擴(kuò)選到整個(gè)部分(會選中整個(gè)頁眉頁腳)
s.Delete()?
#按下刪除鍵,這兩句是為了清除原來的頁碼
s.headerfooter.pagenumbers.Add(4)??
#?添加頁面外側(cè)頁碼
s.MoveLeft(1,?2)??
#?移動到頁碼左邊,移動了兩個(gè)字符距離
s.TypeText('—?')??
#?給頁碼左邊加上一字線,注意不是減號
s.MoveRight()?
#移動到頁碼末尾,移動了一個(gè)字符距離
#?默認(rèn)參數(shù)是1(字符)
s.TypeText('?—')?
s.WholeStory()?
#?擴(kuò)選到整個(gè)頁眉頁腳部分,此處是必要的
#?否則s只是在輸入一字線后的一個(gè)光標(biāo),沒有選擇區(qū)域
s.Font.Name?=?'宋體'
s.Font.Size?=?14?
#頁碼字號為四號
s.paragraphformat.rightindent?=?21?
#頁碼向左縮進(jìn)1字符(21磅)
s.paragraphformat.leftindent?=?21?
#?頁碼向右縮進(jìn)1字符(21磅)
doc.Styles('頁眉').ParagraphFormat.Borders(-3).LineStyle?=?0?
#?頁眉無底邊框橫線
Python通過win32實(shí)現(xiàn)office自動化
https://blog.csdn.net/lzl001/article/details/8435048
引用Microsoft?Word?對象的技術(shù)及實(shí)現(xiàn)
https://www.docin.com/p-1333941826.html
Word組件對象模型
https://blog.csdn.net/wishfly/article/details/39959349
戀習(xí)Python 關(guān)注戀習(xí)Python,Python都好練 好文章,我在看??
評論
圖片
表情
