久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    用Python讀寫(xiě)word文檔

     horkss 2019-03-24
    2018年04月05日 13:21:53 只讀課堂 閱讀數(shù):1178

    Python讀寫(xiě)word文檔有現(xiàn)成的庫(kù)可以處理。我這里采用 python-docx。可以用pip install python-docx安裝一下。

    這里說(shuō)一句,ppt和excel也有類(lèi)似的庫(kù)哦,而且是直接讀取文件里面的xml數(shù)據(jù)。所以doc格式得另找其他庫(kù)處理,doc格式不是基于xml的。

    1、新建或打開(kāi)文件。這個(gè)比較簡(jiǎn)單用docx的Document類(lèi),若指定路徑則是打開(kāi)文檔;若沒(méi)有指定路徑則是新建文檔

    1. #coding:utf-8
    2. import docx
    3. #新建文檔
    4. doc_new = docx.Document()
    5. #讀取文檔
    6. doc = docx.Document(ur'C:\1.docx')

    2、保存文件。有打開(kāi),就有保存。用Document類(lèi)的save方法,其中參數(shù)是保存的文件路徑,或者要保存的文件流。一般指定路徑即可。

    doc.save(path_or_stream)

    3、對(duì)象集合。python-docx包含了word文檔的相關(guān)對(duì)象集合。

    1. doc.paragraphs #段落集合
    2. doc.tables #表格集合
    3. doc.sections #節(jié) 集合
    4. doc.styles #樣式集合
    5. doc.inline_shapes #內(nèi)置圖形 等等...

    4、插入段落。段落是word最基本的對(duì)象之一。

    1. doc.add_paragraph(u'第一段',style=None) #插入一個(gè)段落,文本為“第一段”
    2. #默認(rèn)是不應(yīng)用樣式,這里也可以不寫(xiě)style參數(shù),或者指定一個(gè)段落樣式
    3. doc.add_paragraph(u'第二段',style='Heading 2')
    4. #這些樣式都是word默認(rèn)帶有的樣式,可以直接羅列出來(lái)有哪些段落樣式
    5. print [s.name for s in doc.styles if s.type==1]

    5、新增樣式。這個(gè)幫助文檔里面說(shuō)得不仔細(xì),而且還是英文的。我手頭上的項(xiàng)目用到這個(gè),就自己琢磨出怎么使用,如下。

    1. #coding:utf-8
    2. from docx import Document
    3. from docx.shared import RGBColor #這個(gè)是docx的顏色類(lèi)
    4. #新建文檔
    5. doc = Document()
    6. #新增樣式(第一個(gè)參數(shù)是樣式名稱(chēng),第二個(gè)參數(shù)是樣式類(lèi)型:1代表段落;2代表字符;3代表表格)
    7. style = doc.styles.add_style('style name 1', 2)
    8. #設(shè)置具體樣式(修改樣式字體為藍(lán)色,當(dāng)然還可以修改其他的,大家自己嘗試)
    9. style.font.color.rgb = RGBColor(0x0, 0x0, 0xff)

    6、應(yīng)用字符樣式。字符自然是在段落里面的,可以采用下面方法給段落追加文字和設(shè)置字符樣式。

    1. #插入一個(gè)空白段落
    2. p = doc.add_paragraph('')
    3. p.add_run('123', style="Heading 1 Char")
    4. p.add_run('456')
    5. p.add_run('789', style="Heading 2 Char")
    6. #這樣一個(gè)段落就應(yīng)用了兩個(gè)字符樣式,中間“456”就沒(méi)應(yīng)用樣式
    7. print p.text #輸出結(jié)果是u'123456789' 也還是連續(xù)的

    7、設(shè)置字體。當(dāng)然可以不用通過(guò)設(shè)置樣式對(duì)某些字進(jìn)行設(shè)置,也可以直接設(shè)置。

    1. p = doc.add_paragraph('')
    2. r = p.add_run('123')
    3. r.font.bold = True #加粗
    4. r.font.italic = True #傾斜 等等...

    8、表格操作。表格也是經(jīng)常用到的一種對(duì)象類(lèi)型。

    1. #新建一個(gè)2x3的表格,style可以不寫(xiě)
    2. table=doc.add_table(rows=2,cols=3,style=None)
    3. #可以用table 的rows和columns得到這個(gè)表格的行數(shù)和列數(shù)
    4. print len(table.rows)
    5. print len(table.columns)
    6. #遍歷表格
    7. for row in table.rows:
    8. row.cells[0].text = '1'
    9. #print row.cells[0].text
    10. #新增行或列
    11. table.add_row()
    12. table.add_column()

    Word常見(jiàn)操作差不多就是這些。大家可以查看幫助文檔,也可以用dir和help查看對(duì)象的方法屬性和幫助。

    下面的例子可以運(yùn)行于任何平臺(tái)(PC、Mac、樹(shù)莓派……)。但是,如果想看到產(chǎn)生的文檔,你還是需要一個(gè)能打開(kāi)Office文檔的應(yīng)用。沒(méi)有安裝微軟Office的話(huà),其他替代軟件比如AbiWord、OpenOffice、WPS之類(lèi)的都可以。

    首先安裝python-docx這個(gè)Python庫(kù)

    $ pip install python-docx -U

    (注意,在PyPi里還有一個(gè)叫docx的庫(kù),已經(jīng)停止更新,不建議使用)

    這個(gè)庫(kù)依賴(lài)于lxml,在Windows下可能需要編譯器。如果在安裝python-docx過(guò)程中發(fā)現(xiàn)找不到編譯器或者編譯lxml錯(cuò)誤的現(xiàn)象,可到 https://pypi.python.org/pypi/lxml/2.3/下載和安裝預(yù)編譯的版本。

    只需要4行代碼就可以創(chuàng)建一個(gè)Word文檔:

    1. from docx import Document
    2. document = Document()
    3. document.add_paragraph('Hello,Word!')
    4. document.save('demo.docx')

    第一行引入docx庫(kù)和Document類(lèi)。Document類(lèi)即代表了『文檔』,第二行創(chuàng)建了Document類(lèi)的一個(gè)實(shí)例document,相當(dāng)于『這篇文檔』。緊接著,我們?cè)谖臋n中利用add_paragraph函數(shù)添加一個(gè)段落,段落的內(nèi)容是Hello,Word!。最后,用save函數(shù)將文檔保存在磁盤(pán)上。

    運(yùn)行這個(gè)腳本,就得到了文件demo.docx。用Office軟件打開(kāi),看看里面的內(nèi)容。

    下面一個(gè)任務(wù)是在一個(gè)Word文檔里添加255個(gè)圓圈,顏色為紅色由淺入深。顯然,這個(gè)任務(wù)在Word里人工完成是非常麻煩的。但用代碼就非常簡(jiǎn)單了。

    1. from docx import Document
    2. from PIL import Image,ImageDraw
    3. from io import BytesIO
    4. document = Document() #新建文檔
    5. p = document.add_paragraph() #添加一個(gè)段落
    6. r = p.add_run() #添加一個(gè)游程
    7. img_size = 20
    8. for x in range(255):
    9. im = Image.new("RGB", (img_size,img_size), "white")
    10. draw_obj = ImageDraw.Draw(im)
    11. draw_obj.ellipse((0,0,img_size-1,img_size-1), fill=255-x)#畫(huà)圓
    12. fake_buf_file = BytesIO()#用BytesIO將圖片保存在內(nèi)存里,減少磁盤(pán)操作
    13. im.save(fake_buf_file,"png")
    14. r.add_picture(fake_buf_file)#在當(dāng)前游程中插入圖片
    15. fake_buf_file.close()
    16. document.save("demo.docx")


    畫(huà)圖我們利用了常用的PIL庫(kù)。

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶(hù) 評(píng)論公約

      類(lèi)似文章 更多

      主站蜘蛛池模板: 另类 专区 欧美 制服| 精品免费看国产一区二区| 内射一区二区三区四区| 国产按头口爆吞精在线视频| 人妻无码久久中文字幕专区| 公喝错春药让我高潮| 国产成人AV性色在线影院| 免费人成视频在线观看网站| 亚洲日本欧美日韩中文字幕| 亚洲AV无码之国产精品网址| 亚洲熟妇自偷自拍另类| 亚洲 欧美 国产 制服 动漫| 精品人妻日韩中文字幕| 亚洲日韩VA无码中文字幕| 国产亚洲精品AA片在线播放天| 欧美亚洲国产一区二区三区| 亚洲岛国成人免费av| 无码精品国产VA在线观看DVD| 久久精品一本到99热免费| 不卡高清AV手机在线观看| 国产精品一区中文字幕| 人人妻人人澡人人爽欧美精品| 亚洲欧美日韩愉拍自拍美利坚| 亚洲精品无码中文久久字幕| 国产精品福利自产拍久久| 18无码粉嫩小泬无套在线观看| 成人又黄又爽又色的视频| 无码人妻少妇久久中文字幕蜜桃 | 久在线精品视频线观看| 四虎国产精品永久入口| 免费播放一区二区三区| 国色天香成人一区二区 | 起碰免费公开97在线视频| 国产精品美脚玉足脚交欧美| 国产中文字幕精品喷潮| 亚州少妇无套内射激情视频| 亚洲国产成人精品福利无码| 日韩av综合中文字幕| 日韩精品久久久肉伦网站| 少妇富婆高级按摩出水高潮| 40岁大乳的熟妇在线观看|