乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      生活中的python-利用python-docx自動(dòng)生成表格簡(jiǎn)化工作流程

       heart_青 2020-03-15

      背景

      因?yàn)楣ぷ髟?,需要?jīng)常往兩個(gè)word模板里填寫(xiě)內(nèi)容并生成新的word文件,模板大致如下圖:

      老的工作流程:

      打開(kāi)兩個(gè)表,在表中對(duì)應(yīng)位置填寫(xiě)個(gè)人信息,保存。這樣一來(lái),當(dāng)需要填寫(xiě)的信息比較多的時(shí)候,工作就會(huì)繁瑣。

      新的工作流程:

      利用python-docx編寫(xiě)腳本,運(yùn)行腳本-輸入個(gè)人信息-自動(dòng)生成兩個(gè)word模板

      腳本用到的python-docx庫(kù)的功能:

      1、創(chuàng)建與合并表格
      2、添加文本
      3、設(shè)置文本屬性(如大小、加粗、下劃線、居中等)

      安裝python-docx:

      pip install python_docx
      創(chuàng)建與合并表格

      在python-docx中有表格對(duì)象(Table)。我們可以把一個(gè)表格看成M行(Row)N列(Column)的矩陣。

      表格中的一個(gè)“格子”就是一個(gè)cell對(duì)象,同時(shí)它還有rows(行)和columns(列)屬性

      首先創(chuàng)建一個(gè)新的文檔

      from docx import Document
      document = Document()

      然后用Document類(lèi)的add_table方法增加一個(gè)表格,其中rows是行,cols是列,style表格樣式,具體可以查看官方文檔:

      table = document.add_table(rows=37,cols=13,style='Table Grid')

      上述代碼就在word里插入了一個(gè)37行、13列的表格。(有37*13=481個(gè)cell)

      生成的每個(gè)cell都是有“坐標(biāo)”的,比如上面的表格左上角cell為(0,0),右下角cell為(36,12)

      下面要做的就是合并一些cell,從而達(dá)到我們最終需要的表格

      table.cell(0,0).merge(table.cell(2,2))

      上述代碼就將cell(0,0)到cell(2,2)之間的所有cell合并成一個(gè)cell

      這里需要注意的是,雖然每個(gè)cell都合并了,但其實(shí)它還是存在的。比如合并了(0,0)和(0,1)兩個(gè)cell,那么這個(gè)合并的cell其實(shí)就是(0,0;0,1)

      如果cell較多,無(wú)法直觀的看出坐標(biāo)的話(huà),可以用下列的代碼將每個(gè)cell的坐標(biāo)都標(biāo)注出來(lái),方便合并

      document = Document()table = document.add_table(rows=37,cols=13,style='Table Grid')document.save('table-1.docx')document1 = Document('table-1.docx')table = document1.tables[0]for row,obj_row in enumerate(table.rows):
         for col,cell in enumerate(obj_row.cells):
             cell.text = cell.text + "%d,%d " % (row,col)document1.save('table-2.docx')
      添加文本

      將所有cell依次合并后,就需要向合并后的cell里添加文本。

      用table的row方法可以得到一個(gè)表格的一行l(wèi)ist其中包含了這一行的所有cell

      hdr_cells0 = table.rows[0].cells

      上面代碼就得到了合并表格后的第一行所有cell,然后我們用hdr_cell0[0]就可以得到合并表格后的第一行的第一個(gè)cell。用add_paragraph方法即可像cell里添加文本

      hdr_cells0[0].add_paragraph('院(系)\n')

      上面已經(jīng)說(shuō)過(guò),合并的cell其實(shí)還是存在的。因?yàn)槲宜枰谋砀竦谝粋€(gè)cell實(shí)際合并了(0,0)---(2,2)之間六個(gè)cell。所以hdr_cell0[0].add_paragraph其實(shí)就是向這六個(gè)cell里寫(xiě)入內(nèi)容。

      第二個(gè)cell合并的是(0,3)---(2,6)之間的cell。所以就應(yīng)該向(0,3)寫(xiě)入文本,其實(shí)向這之間任一一個(gè)cell寫(xiě)入文本都是可以的,所以應(yīng)該是

      hdr_cells0[3].add_paragraph('院')

      按照上面的方法依次類(lèi)推,就可以將所需表格的整體部分做成。

      設(shè)置文本屬性(如大小、加粗、下劃線、居中等)

      合并表格并且添加了所需文本后,下面就需要設(shè)置表格內(nèi)文本的各種屬性了,比如大小、加粗、下劃線、居中等

      在python-docx中,word主要有兩種文本格式等級(jí):塊等級(jí)(block-level)和內(nèi)聯(lián)等級(jí)(inline-level)。word中大部分內(nèi)容都是由這兩種等級(jí)的對(duì)象組成。

      段落是word文件中主要的塊對(duì)象,圖片、表、標(biāo)題、列表也是塊對(duì)象

      內(nèi)聯(lián)對(duì)象是塊對(duì)象的組成部分塊對(duì)象的所有內(nèi)容都包含在內(nèi)聯(lián)對(duì)象中,一個(gè)塊對(duì)象由一個(gè)或多個(gè)內(nèi)聯(lián)對(duì)象組成

      run 是常用的內(nèi)聯(lián)對(duì)象,例如:

             p = document.add_paragraph('This is paragraph')
             p.add_run('bold').bold = True
             p.add_run(' and some ').font.size = Pt(14)
             p.add_run('italic.').italic = True

      這個(gè)例子中一個(gè)段落(塊對(duì)象)包含三個(gè) run(內(nèi)聯(lián)對(duì)象),每一個(gè) run 依次設(shè)置了粗體、大小、斜體三種屬性

      具體設(shè)置run屬性直接用代碼說(shuō)明,更詳細(xì)的請(qǐng)直接查閱官方文檔

      from docx import Documentfrom docx.shared import Inches, Ptfrom docx.enum.text import WD_ALIGN_PARAGRAPH
      
      document = Document()#設(shè)置整個(gè)文檔的默認(rèn)字體document.styles['Normal'].font.name = u'宋體'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')p1=document.add_paragraph()#設(shè)置p1段落居中p1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER#p1段落大小p1.paragraph_format.line_spacing = Pt(25) #給p1段落添加run對(duì)象r1,并設(shè)置文本r1 =p1.add_run('添加文本\r添加文本\n')#文字大小r1.font.size = Pt(16)#粗體r1.bold = True#下劃線r1.font.underline = True

      源代碼已上傳至:
      https://github.com/juventusryp/python-in-life

      參考鏈接:

      1.用 python 來(lái)操作 docx, xlsx 格式文件(二)(使用 docx 庫(kù)操作 docx 格式文件)

      2.使用表格—— 使用Python讀寫(xiě)Office文檔之三

        本站是提供個(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)似文章 更多