日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python办公自动化博客_自动化办公 Python 操控 Word

發(fā)布時(shí)間:2023/12/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python办公自动化博客_自动化办公 Python 操控 Word 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

python word

1. 自定義樣式

自定義樣式

python可以自定義三類樣式段落樣式

字符樣式

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

以設(shè)置段落樣式為例# 創(chuàng)建自定義段落樣式(第一個(gè)參數(shù)為樣式名, 第二個(gè)參數(shù)為樣式類型, 1為段落樣式, 2為字符樣式, 3為表格樣式)

UserStyle1 = document.styles.add_style('UserStyle1', 1)

# 設(shè)置字體尺寸

UserStyle1.font.size = Pt(40)

# 設(shè)置字體顏色

UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00)

# 居中文本

UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 設(shè)置中文字體

UserStyle1.font.name = '微軟雅黑'

UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')

2.理解結(jié)構(gòu)關(guān)系

結(jié)構(gòu)關(guān)系往文檔中插入文本內(nèi)容, 首先要插入一個(gè)段落, 段落后面可追加字符, 但文檔不能直接插入字符

段落之間會(huì)自動(dòng)以 回車符號(hào) 分隔

段落 和 字符 可 各自設(shè)置獨(dú)立的樣式

實(shí)例: 插入段落, 插入段落后追加字符# 使用自定義段落樣式

document.add_paragraph('自定義段落樣式', style = UserStyle1)

# 使用自定義字符樣式

document.add_paragraph('').add_run('正月里采花無(wú)喲花采,二月間采花花喲正開(kāi),二月間采花花喲正開(kāi)。三月里桃花紅喲似海,四月間葡萄架喲上開(kāi),四月間葡萄架喲上開(kāi)。', style = UserStyle2)

3. 插入圖片python-docx支持將圖片插入文檔, 且可以設(shè)置圖片大小

插入圖片

實(shí)例代碼:document.add_picture('少女17087938.jpg', width=Inches(5))

4.插入列表

插入列表

插入有序列表document.add_paragraph('把冰箱門打開(kāi)', style='List Number')

document.add_paragraph('把大象裝進(jìn)去', style='List Number')

document.add_paragraph('把冰箱門關(guān)上', style='List Number')

插入無(wú)序列表document.add_paragraph('天地匆匆 驚鴻而過(guò) 路有千百個(gè)', style='List Bullet')

document.add_paragraph('遑遑?zé)o歸 閑云逸鶴 人間紅塵過(guò)', style='List Bullet')

document.add_paragraph('引勢(shì)而流 鴻門亂局 各有各選擇', style='List Bullet')

document.add_paragraph('乾震坎艮 坤巽離兌 定一切生克', style='List Bullet')

5.插入表格

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

cols_num = 6

table = document.add_table(rows=rows_num, cols=cols_num, style = 'Table Grid')

for r in range(rows_num):

for c in range(cols_num):

table.cell(r, c).text = "第{r}行{c}列".format(r = r+1, c = c+1)

完整源碼:from docx import Document

from docx.shared import Inches

from docx.dml.color import ColorFormat

from docx.shared import Pt

from docx.shared import RGBColor

from docx.oxml.ns import qn

from docx.enum.style import WD_STYLE_TYPE

from docx.enum.text import WD_ALIGN_PARAGRAPH

def main():

# 創(chuàng)建文檔對(duì)象

document = Document()

# 設(shè)置默認(rèn)字體

document.styles['Normal'].font.name = '微軟雅黑'

document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')

# 創(chuàng)建自定義段落樣式(第一個(gè)參數(shù)為樣式名, 第二個(gè)參數(shù)為樣式類型, 1為段落樣式, 2為字符樣式, 3為表格樣式)

UserStyle1 = document.styles.add_style('UserStyle1', 1)

# 設(shè)置字體尺寸

UserStyle1.font.size = Pt(40)

# 設(shè)置字體顏色

UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00)

# 居中文本

UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 設(shè)置中文字體

UserStyle1.font.name = '微軟雅黑'

UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')

# 創(chuàng)建自定義字符樣式(第一個(gè)參數(shù)為樣式名, 第二個(gè)參數(shù)為樣式類型, 1為段落樣式, 2為字符樣式, 3為表格樣式)

UserStyle2 = document.styles.add_style('UserStyle2', 2)

# 設(shè)置字體尺寸

UserStyle2.font.size = Pt(15)

# 設(shè)置字體顏色0c8ac5

UserStyle2.font.color.rgb = RGBColor(0x0c, 0x8a, 0xc5)

# 設(shè)置段落樣式為宋體

UserStyle2.font.name = '宋體'

UserStyle2._element.rPr.rFonts.set(qn('w:eastAsia'), '宋體')

# 使用自定義段落樣式

document.add_paragraph('自定義段落樣式', style = UserStyle1)

# 使用自定義字符樣式

document.add_paragraph('').add_run('正月里采花無(wú)喲花采,二月間采花花喲正開(kāi),二月間采花花喲正開(kāi)。三月里桃花紅喲似海,四月間葡萄架喲上開(kāi),四月間葡萄架喲上開(kāi)。', style = UserStyle2)

# 設(shè)置粗體字

document.add_paragraph('設(shè)置粗體字:').add_run('粗體字').bold = True

# 設(shè)置斜體字

document.add_paragraph('設(shè)置斜體字:').add_run('斜體字').italic = True

# 設(shè)置字號(hào)50

document.add_paragraph('設(shè)置字號(hào)50:').add_run('50').font.size = Pt(50)

# 設(shè)置字體顏色為 af2626

document.add_paragraph('設(shè)置字體顏色:').add_run('顏色').font.color.rgb = RGBColor(0xaf, 0x26, 0x26)

# 樣式疊加: 將字體改到30號(hào)并且將字體改成特定顏色;

doubleStyle = document.add_paragraph('同時(shí)設(shè)置文字顏色和字號(hào):').add_run('顏色和尺寸')

doubleStyle.font.size = Pt(30)

doubleStyle.font.color.rgb = RGBColor(0xaf, 0x26, 0x26)

# 添加分頁(yè)符

document.add_page_break()

# 創(chuàng)建 有序列表

document.add_paragraph('').add_run('有序列表').font.size = Pt(30)

document.add_paragraph('把冰箱門打開(kāi)', style='List Number')

document.add_paragraph('把大象裝進(jìn)去', style='List Number')

document.add_paragraph('把冰箱門關(guān)上', style='List Number')

# 創(chuàng)建 無(wú)序列表

document.add_paragraph('').add_run('無(wú)序列表').font.size = Pt(30)

document.add_paragraph('天地匆匆 驚鴻而過(guò) 路有千百個(gè)', style='List Bullet')

document.add_paragraph('遑遑?zé)o歸 閑云逸鶴 人間紅塵過(guò)', style='List Bullet')

document.add_paragraph('引勢(shì)而流 鴻門亂局 各有各選擇', style='List Bullet')

document.add_paragraph('乾震坎艮 坤巽離兌 定一切生克', style='List Bullet')

# 添加分頁(yè)符

document.add_page_break()

# 添加圖片

document.add_paragraph('').add_run('添加圖片').font.size = Pt(30)

document.add_picture('少女17087938.jpg', width=Inches(5))

# 添加分頁(yè)符

document.add_page_break()

document.add_paragraph('').add_run('創(chuàng)建表格').font.size = Pt(30)

# 創(chuàng)建兩行兩列的表格

rows_num = 5

cols_num = 6

table = document.add_table(rows=rows_num, cols=cols_num, style = 'Table Grid')

for r in range(rows_num):

for c in range(cols_num):

table.cell(r, c).text = "第{r}行{c}列".format(r = r+1, c = c+1)

# 保存文檔

document.save('Python生成的文檔.docx')

if __name__ == '__main__':

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

少女17087938.jpg

最終效果:

最終效果.png

自動(dòng)化修改文檔

保留格式并替換實(shí)例: 將當(dāng)前目錄下, 所有docx文件內(nèi)的"海南大學(xué)", 替換為"Hainan University", 并將新文件添加前綴new后, 保存到當(dāng)前目錄下

轉(zhuǎn)換前

轉(zhuǎn)換后

終端打印import docx

import os

import re

# 傳入三個(gè)參數(shù), 舊字符串, 新字符串, 文件對(duì)象

def replace_text(old_text, new_text, file):

# 遍歷文件對(duì)象

for f in file.paragraphs:

# 如果 舊字符串 在 某個(gè)段落 中

if old_text in f.text:

print("替換前:", f.text)

# 將段落存入 inline

inline = f.runs

# 遍歷 段落 生成 i

for i in inline:

# 如果 舊字符串 在 i 中

if old_text in i.text:

# 替換 i.text 內(nèi)文本資源

text = i.text.replace(old_text, new_text)

i.text = text

print("替換后===>", f.text)

def main():

# 獲取當(dāng)前目錄下所有的文件名列表

old_file_names = os.listdir()

# 獲取所有docx文件名列表

docx_file_names = []

for old_file_name in old_file_names:

if re.match(r'^[^~].*\.docx', old_file_name):

print(old_file_name)

docx_file_names.append(old_file_name)

for docx_file_name in docx_file_names:

try:

# 獲取文件對(duì)象

file=docx.Document(docx_file_name)

# 三個(gè)參數(shù): 舊的字符串, 新的字符串, 文件對(duì)象

print("開(kāi)始替換:", docx_file_name)

replace_text('海南大學(xué)', 'Hainan University', file)

file.save('new_'+docx_file_name)

print(docx_file_name, "替換成功")

except:

print(docx_file_name, "替換失敗")

pass

if __name__ == '__main__':

main()

總結(jié)

以上是生活随笔為你收集整理的python办公自动化博客_自动化办公 Python 操控 Word的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。