小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

《自動化辦公》Python

 Four兄 2019-08-25

雖然Word不好用, 但還必須得用它, python-docx是專門用于編輯Word文檔的一個工具庫, 它有兩大用途, 自動化生成word文檔 and 自動化修改文檔

1. 自定義樣式

python可以自定義三類樣式

  • 段落樣式
  • 字符樣式
  • 表格樣式(一般用不到)

這三類樣式的創(chuàng)建方式基本一致, 只是創(chuàng)建參數(shù) 略有不同(1為段落樣式, 2為字符樣式, 3為表格樣式)

以設置段落樣式為例

  1. # 創(chuàng)建自定義段落樣式(第一個參數(shù)為樣式名, 第二個參數(shù)為樣式類型, 1為段落樣式, 2為字符樣式, 3為表格樣式)
  2. UserStyle1 = document.styles.add_style('UserStyle1', 1)
  3. # 設置字體尺寸
  4. UserStyle1.font.size = Pt(40)
  5. # 設置字體顏色
  6. UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00)
  7. # 居中文本
  8. UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
  9. # 設置中文字體
  10. UserStyle1.font.name = '微軟雅黑'
  11. UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')
  12. 復制代碼

2.理解結構關系

  • 往文檔中插入文本內(nèi)容, 首先要插入一個段落, 段落后面可追加字符, 但文檔不能直接插入字符
  • 段落之間會自動以 回車符號 分隔
  • 段落 和 字符 可 各自設置獨立的樣式

實例: 插入段落, 插入段落后追加字符

  1. # 使用自定義段落樣式
  2. document.add_paragraph('自定義段落樣式', style = UserStyle1)
  3. # 使用自定義字符樣式
  4. document.add_paragraph('').add_run('正月里采花無喲花采,二月間采花花喲正開,二月間采花花喲正開。三月里桃花紅喲似海,四月間葡萄架喲上開,四月間葡萄架喲上開。', style = UserStyle2)
  5. 復制代碼

3. 插入圖片

python-docx支持將圖片插入文檔, 且可以設置圖片大小

實例代碼:

  1. document.add_picture('少女17087938.jpg', width=Inches(5))
  2. 復制代碼

4.插入列表

插入有序列表

  1. document.add_paragraph('把冰箱門打開', style='List Number')
  2. document.add_paragraph('把大象裝進去', style='List Number')
  3. document.add_paragraph('把冰箱門關上', style='List Number')
  4. 復制代碼

插入無序列表

  1. document.add_paragraph('天地匆匆 驚鴻而過 路有千百個', style='List Bullet')
  2. document.add_paragraph('遑遑無歸 閑云逸鶴 人間紅塵過', style='List Bullet')
  3. document.add_paragraph('引勢而流 鴻門亂局 各有各選擇', style='List Bullet')
  4. document.add_paragraph('乾震坎艮 坤巽離兌 定一切生克', style='List Bullet')
  5. 復制代碼

5.插入表格

把表格看做二維數(shù)組, 然后往數(shù)組中填數(shù)據(jù)

  1. rows_num = 5
  2. cols_num = 6
  3. table = document.add_table(rows=rows_num, cols=cols_num, style = 'Table Grid')
  4. for r in range(rows_num):
  5. for c in range(cols_num):
  6. table.cell(r, c).text = '第{r}行{c}列'.format(r = r+1, c = c+1)
  7. 復制代碼

完整源碼:

  1. from docx import Document
  2. from docx.shared import Inches
  3. from docx.dml.color import ColorFormat
  4. from docx.shared import Pt
  5. from docx.shared import RGBColor
  6. from docx.oxml.ns import qn
  7. from docx.enum.style import WD_STYLE_TYPE
  8. from docx.enum.text import WD_ALIGN_PARAGRAPH
  9. def main():
  10. # 創(chuàng)建文檔對象
  11. document = Document()
  12. # 設置默認字體
  13. document.styles['Normal'].font.name = '微軟雅黑'
  14. document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')
  15. # 創(chuàng)建自定義段落樣式(第一個參數(shù)為樣式名, 第二個參數(shù)為樣式類型, 1為段落樣式, 2為字符樣式, 3為表格樣式)
  16. UserStyle1 = document.styles.add_style('UserStyle1', 1)
  17. # 設置字體尺寸
  18. UserStyle1.font.size = Pt(40)
  19. # 設置字體顏色
  20. UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00)
  21. # 居中文本
  22. UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
  23. # 設置中文字體
  24. UserStyle1.font.name = '微軟雅黑'
  25. UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')
  26. # 創(chuàng)建自定義字符樣式(第一個參數(shù)為樣式名, 第二個參數(shù)為樣式類型, 1為段落樣式, 2為字符樣式, 3為表格樣式)
  27. UserStyle2 = document.styles.add_style('UserStyle2', 2)
  28. # 設置字體尺寸
  29. UserStyle2.font.size = Pt(15)
  30. # 設置字體顏色0c8ac5
  31. UserStyle2.font.color.rgb = RGBColor(0x0c, 0x8a, 0xc5)
  32. # 設置段落樣式為宋體
  33. UserStyle2.font.name = '宋體'
  34. UserStyle2._element.rPr.rFonts.set(qn('w:eastAsia'), '宋體')
  35. # 使用自定義段落樣式
  36. document.add_paragraph('自定義段落樣式', style = UserStyle1)
  37. # 使用自定義字符樣式
  38. document.add_paragraph('').add_run('正月里采花無喲花采,二月間采花花喲正開,二月間采花花喲正開。三月里桃花紅喲似海,四月間葡萄架喲上開,四月間葡萄架喲上開。', style = UserStyle2)
  39. # 設置粗體字
  40. document.add_paragraph('設置粗體字:').add_run('粗體字').bold = True
  41. # 設置斜體字
  42. document.add_paragraph('設置斜體字:').add_run('斜體字').italic = True
  43. # 設置字號50
  44. document.add_paragraph('設置字號50:').add_run('50').font.size = Pt(50)
  45. # 設置字體顏色為 af2626
  46. document.add_paragraph('設置字體顏色:').add_run('顏色').font.color.rgb = RGBColor(0xaf, 0x26, 0x26)
  47. # 樣式疊加: 將字體改到30號并且將字體改成特定顏色;
  48. doubleStyle = document.add_paragraph('同時設置文字顏色和字號:').add_run('顏色和尺寸')
  49. doubleStyle.font.size = Pt(30)
  50. doubleStyle.font.color.rgb = RGBColor(0xaf, 0x26, 0x26)
  51. # 添加分頁符
  52. document.add_page_break()
  53. # 創(chuàng)建 有序列表
  54. document.add_paragraph('').add_run('有序列表').font.size = Pt(30)
  55. document.add_paragraph('把冰箱門打開', style='List Number')
  56. document.add_paragraph('把大象裝進去', style='List Number')
  57. document.add_paragraph('把冰箱門關上', style='List Number')
  58. # 創(chuàng)建 無序列表
  59. document.add_paragraph('').add_run('無序列表').font.size = Pt(30)
  60. document.add_paragraph('天地匆匆 驚鴻而過 路有千百個', style='List Bullet')
  61. document.add_paragraph('遑遑無歸 閑云逸鶴 人間紅塵過', style='List Bullet')
  62. document.add_paragraph('引勢而流 鴻門亂局 各有各選擇', style='List Bullet')
  63. document.add_paragraph('乾震坎艮 坤巽離兌 定一切生克', style='List Bullet')
  64. # 添加分頁符
  65. document.add_page_break()
  66. # 添加圖片
  67. document.add_paragraph('').add_run('添加圖片').font.size = Pt(30)
  68. document.add_picture('少女17087938.jpg', width=Inches(5))
  69. # 添加分頁符
  70. document.add_page_break()
  71. document.add_paragraph('').add_run('創(chuàng)建表格').font.size = Pt(30)
  72. # 創(chuàng)建兩行兩列的表格
  73. rows_num = 5
  74. cols_num = 6
  75. table = document.add_table(rows=rows_num, cols=cols_num, style = 'Table Grid')
  76. for r in range(rows_num):
  77. for c in range(cols_num):
  78. table.cell(r, c).text = '第{r}行{c}列'.format(r = r+1, c = c+1)
  79. # 保存文檔
  80. document.save('Python生成的文檔.docx')
  81. if __name__ == '__main__':
  82. main()
  83. 復制代碼

將源碼保存為單獨的python文件后,安裝python-docx, 找一張圖片,命名為少女17087938.jpg, 將圖片與python文件放到同一個目錄, 然后再python3環(huán)境下運行python文件即可! 最后附測試圖片一張:

最終效果:

自動化修改文檔

實例: 將當前目錄下, 所有docx文件內(nèi)的'海南大學', 替換為'Hainan University', 并將新文件添加前綴new后, 保存到當前目錄下

  1. import docx
  2. import os
  3. import re
  4. # 傳入三個參數(shù), 舊字符串, 新字符串, 文件對象
  5. def replace_text(old_text, new_text, file):
  6. # 遍歷文件對象
  7. for f in file.paragraphs:
  8. # 如果 舊字符串 在 某個段落 中
  9. if old_text in f.text:
  10. print('替換前:', f.text)
  11. # 將段落存入 inline
  12. inline = f.runs
  13. # 遍歷 段落 生成 i
  14. for i in inline:
  15. # 如果 舊字符串 在 i 中
  16. if old_text in i.text:
  17. # 替換 i.text 內(nèi)文本資源
  18. text = i.text.replace(old_text, new_text)
  19. i.text = text
  20. print('替換后===>', f.text)
  21. def main():
  22. # 獲取當前目錄下所有的文件名列表
  23. old_file_names = os.listdir()
  24. # 獲取所有docx文件名列表
  25. docx_file_names = []
  26. for old_file_name in old_file_names:
  27. if re.match(r'^[^~].*\.docx', old_file_name):
  28. print(old_file_name)
  29. docx_file_names.append(old_file_name)
  30. for docx_file_name in docx_file_names:
  31. try:
  32. # 獲取文件對象
  33. file=docx.Document(docx_file_name)
  34. # 三個參數(shù): 舊的字符串, 新的字符串, 文件對象
  35. print('開始替換:', docx_file_name)
  36. replace_text('海南大學', 'Hainan University', file)
  37. file.save('new_'+docx_file_name)
  38. print(docx_file_name, '替換成功')
  39. except:
  40. print(docx_file_name, '替換失敗')
  41. pass
  42. if __name__ == '__main__':
  43. main()
  44. 復制代碼

關于Python操控PPT:https://www.jianshu.com/p/5b294515b480

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約