最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自動化處理Excel、Word、PDF文檔的操作大全

 更新時間:2025年12月21日 15:19:00   作者:小莊-Python辦公  
在日常工作中,處理 Excel 表格、PDF 文檔和 Word 文檔是必不可少的任務(wù),Python 提供了強(qiáng)大的第三方庫來幫助我們自動化這些重復(fù)性工作,極大提高效率,本文將詳細(xì)介紹如何使用 openpyxl 操作 Excel,需要的朋友可以參考下

Python 辦公自動化完全指南:Excel、PDF 與 Word

在日常工作中,處理 Excel 表格、PDF 文檔和 Word 文檔是必不可少的任務(wù)。Python 提供了強(qiáng)大的第三方庫來幫助我們自動化這些重復(fù)性工作,極大提高效率。本文將詳細(xì)介紹如何使用 openpyxl 操作 Excel,使用 PyPDF2pdfplumber 操作 PDF,以及使用 python-docx 操作 Word。

章節(jié)一:Python 使用 openpyxl 操作 Excel

openpyxl 是一個用于讀寫 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 庫。

1、openpyxl 庫介紹

  • 安裝
pip install openpyxl
  • 核心概念
    • Workbook: 工作簿(整個 Excel 文件)
    • Worksheet: 工作表(Sheet)
    • Cell: 單元格

2、Python 怎么打開及讀取表格內(nèi)容?

1)Excel 表格術(shù)語

  • Workbook: Excel 文件對象
  • Sheet: 表單
  • Row: 行(從 1 開始)
  • Column: 列(從 A 開始或從 1 開始)
  • Cell: 單元格

2)打開 Excel 表格并獲取表格名稱

from openpyxl import load_workbook

# 加載工作簿
wb = load_workbook('example.xlsx')

# 獲取所有 sheet 名稱
print(wb.sheetnames) 
# 輸出: ['Sheet1', 'Sheet2']

3)通過 sheet 名稱獲取表格

# 獲取特定的 sheet
ws = wb['Sheet1']
# 或者獲取當(dāng)前活躍的 sheet
ws_active = wb.active
print(ws.title)

4)獲取表格的尺寸大小

# 獲取表格的最大行和最大列
print(f"最大行: {ws.max_row}")
print(f"最大列: {ws.max_column}")
# output: 尺寸: A1:C10
print(f"尺寸: {ws.dimensions}") 

5)獲取表格內(nèi)某個格子的數(shù)據(jù)

① sheet[“A1”] 方式

cell_value = ws['A1'].value
print(cell_value)

② sheet.cell(row=, column=) 方式

# 注意:row 和 column 都是從 1 開始
cell_value = ws.cell(row=1, column=1).value
print(cell_value)

6)獲取某個格子的行數(shù)、列數(shù)、坐標(biāo)

c = ws['B2']
print(f"行: {c.row}, 列: {c.column}, 坐標(biāo): {c.coordinate}")

7)獲取一系列格子

① sheet[] 方式

# 獲取 A 列
col_a = ws['A']
# 獲取 A 到 C 列
col_range = ws['A:C']
# 獲取第 1 行
row_1 = ws[1]
# 獲取 A1 到 C3 的區(qū)域
cell_range = ws['A1:C3']

for row in cell_range:
    for cell in row:
        print(cell.value)

② .iter_rows() 方式
按行迭代,返回生成器,效率更高。

for row in ws.iter_rows(min_row=1, max_row=2, min_col=1, max_col=3):
    for cell in row:
        print(cell.value)

③ sheet.rows
返回所有行的生成器。

for row in ws.rows:
    print(row) # tuple of cells

3、Python 如何向 Excel 中寫入某些內(nèi)容?

1)修改表格中的內(nèi)容

① 向某個格子中寫入內(nèi)容并保存

ws['A1'] = 'Hello World'
ws.cell(row=1, column=2, value='Python')
# 保存文件(如果是修改現(xiàn)有文件,建議另存為新文件名以防數(shù)據(jù)丟失)
wb.save('modified_example.xlsx')

② .append():向表格中插入行數(shù)據(jù)
非常常用的方法,用于在表格末尾追加一行數(shù)據(jù)。

# 添加一行數(shù)據(jù)
ws.append(['Name', 'Age', 'Gender'])
ws.append(['Alice', 25, 'Female'])

③ 在 Python 中使用 Excel 函數(shù)公式

ws['C1'] = 10
ws['C2'] = 20
ws['C3'] = '=SUM(C1:C2)' # 寫入公式

④ .insert_cols() 和 .insert_rows():插入空行和空列

ws.insert_rows(idx=2, amount=1) # 在第2行前插入1行
ws.insert_cols(idx=1, amount=2) # 在第1列前插入2列

⑤ .delete_rows() 和 .delete_cols():刪除行和列

ws.delete_rows(idx=2, amount=1) # 刪除第2行
ws.delete_cols(idx=1, amount=1) # 刪除第1列

⑥ .move_range():移動格子

# 將 A1:C3 區(qū)域向下移動 2 行,向右移動 1 列
ws.move_range("A1:C3", rows=2, cols=1)

⑦ .create_sheet():創(chuàng)建新的 sheet 表格

ws_new = wb.create_sheet("NewSheet", index=0) # index=0 插入到最前面

⑧ .remove():刪除某個 sheet 表

del wb['NewSheet']
# 或者
# wb.remove(wb['NewSheet'])

⑨ .copy_worksheet():復(fù)制一個 sheet 表

source = wb.active
target = wb.copy_worksheet(source)
target.title = "Copy of Active"

⑩ sheet.title:修改 sheet 表的名稱

ws.title = "My Renamed Sheet"

? 創(chuàng)建新的 Excel 表格文件

from openpyxl import Workbook
wb_new = Workbook()
ws_new = wb_new.active
ws_new.title = "Data"
wb_new.save("new_file.xlsx")
wb.save('modified_example.xlsx')

? sheet.freeze_panes:凍結(jié)窗口

ws.freeze_panes = 'A2' # 凍結(jié)第一行
# ws.freeze_panes = 'B1' # 凍結(jié)第一列

? sheet.auto_filter.ref:給表格添加“篩選器”

from openpyxl import load_workbook
wb = load_workbook('example.xlsx')
ws = wb.active
ws.auto_filter.ref = ws.dimensions # 給所有有數(shù)據(jù)的區(qū)域添加篩選
# 或者指定區(qū)域
ws.auto_filter.ref = "A1:C10"
wb.save('modified_example.xlsx')

4、批量調(diào)整字體和樣式

需要導(dǎo)入 openpyxl.styles 模塊。

1)修改字體樣式

from openpyxl.styles import Font
ws = wb.active
# 粗體,斜體,紅色,字號20
font_style = Font(name='Arial', size=20, bold=True, italic=True, color='FF0000')
ws['A1'].font = font_style
wb.save('modified_example.xlsx')

2)獲取表格中格子的字體樣式

current_font = ws['A1'].font
print(current_font.name, current_font.size)

3)設(shè)置對齊樣式

from openpyxl.styles import Alignment

# 水平居中,垂直居中,自動換行
align = Alignment(horizontal='center', vertical='center', wrap_text=True)
ws['A1'].alignment = align
wb.save('modified_example.xlsx')

4)設(shè)置邊框樣式

from openpyxl import load_workbook
from openpyxl.styles import Border, Side

wb = load_workbook('example.xlsx')
ws = wb.active

# 使用雙線邊框,視覺上看起來更粗
double_border = Side(border_style="double", color="FF0000")
border = Border(left=double_border, 
                right=double_border, 
                top=double_border, 
                bottom=double_border)

ws['A1'].border = border
wb.save('modified_example.xlsx')

"thin" - 細(xì)邊框
"medium" - 中等粗細(xì)
"thick" - 粗邊框
"double" - 雙線邊框
"hair" - 極細(xì)邊框
"dashed" - 虛線邊框
"dotted" - 點(diǎn)線邊框等

5)設(shè)置填充樣式

from openpyxl import load_workbook
from openpyxl.styles import PatternFill

# 加載工作簿
wb = load_workbook('example.xlsx')
ws = wb.active
# 黃色背景填充
fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
ws['A1'].fill = fill

# 保存修改
wb.save('modified_example.xlsx')

6)設(shè)置行高和列寬

from openpyxl import load_workbook

# 加載工作簿
wb = load_workbook('example.xlsx')
ws = wb.active
ws.row_dimensions[1].height = 30 # 設(shè)置第1行高度
ws.column_dimensions['A'].width = 20 # 設(shè)置A列寬度
# 保存修改
wb.save('modified_example.xlsx')

7)合并單元格

from openpyxl import load_workbook

# 加載工作簿
wb = load_workbook('example.xlsx')
ws = wb.active
ws.merge_cells('A1:B2')
# 或者
# ws.merge_cells(start_row=1, start_column=1, end_row=2, end_column=2)
# 取消合并
# ws.unmerge_cells('A1:B2')
# 保存修改
wb.save('modified_example.xlsx')

章節(jié)二:Python 使用 PyPDF2 和 pdfplumber 操作 PDF

1、PyPDF2 和 pdfplumber 庫介紹

PyPDF2: 主要用于合并、拆分、旋轉(zhuǎn)、加密 PDF 等頁面級操作,提取文本能力較弱。

pdfplumber: 專注于提取 PDF 中的文本和表格,準(zhǔn)確率較高。

安裝:

pip install PyPDF2 pdfplumber

2、Python 提取 PDF 文字內(nèi)容

1)利用 pdfplumber 提取文字

import pdfplumber

with pdfplumber.open("荷塘月色.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(f"--- Page {page.page_number} ---")
        print(text)

2)利用 pdfplumber 提取表格并寫入 Excel

import pdfplumber
import pandas as pd

with pdfplumber.open("example_table.pdf") as pdf:
    page = pdf.pages[0]  # 假設(shè)表格在第一頁
    table = page.extract_table()

    if table:
        df = pd.DataFrame(table[1:], columns=table[0])  # 假設(shè)第一行是表頭
        df.to_excel("output_table.xlsx", index=False)

3、PDF 合并及頁面的排序和旋轉(zhuǎn)

使用 PyPDF2 進(jìn)行操作。

1)分割及合并 PDF

① 合并 PDF

from PyPDF2 import PdfMerger

merger = PdfMerger()
pdfs = ['example_table1.pdf', 'example_table2.pdf']

for pdf in pdfs:
    merger.append(pdf)

merger.write("merged_result.pdf")
merger.close()

② 拆分 PDF

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("merged_result.pdf")

for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)
    with open(f"page_{i+1}.pdf", "wb") as f:
        writer.write(f)

2)旋轉(zhuǎn)及排序 PDF

① 旋轉(zhuǎn) PDF

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("荷塘月色.pdf")
writer = PdfWriter()

page = reader.pages[0]
page.rotate(90) # 順時針旋轉(zhuǎn)90度
writer.add_page(page)

with open("rotated.pdf", "wb") as f:
    writer.write(f)

② 排序 PDF

可以通過調(diào)整 add_page 的順序來實(shí)現(xiàn)。

# 假設(shè)倒序保存
from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("荷塘月色.pdf")
writer = PdfWriter()
for page in reversed(reader.pages):
    writer.add_page(page)

with open("reversed.pdf", "wb") as f:
    writer.write(f)

4、PDF 批量加水印及加密、解密

1)批量加水印

原理:將水印頁面作為“印章”蓋在每一頁上。

from PyPDF2 import PdfReader, PdfWriter

watermark = PdfReader("watermark.pdf").pages[0]
reader = PdfReader("content.pdf")
writer = PdfWriter()

for page in reader.pages:
    page.merge_page(watermark) # 合并頁面
    writer.add_page(page)

with open("watermarked.pdf", "wb") as f:
    writer.write(f)

2)批量加密、解密

① 加密 PDF

from PyPDF2 import PdfReader, PdfWriter

writer = PdfWriter()
reader = PdfReader("荷塘月色.pdf")

for page in reader.pages:
    writer.add_page(page)

writer.encrypt("password123") # 設(shè)置密碼

with open("encrypted.pdf", "wb") as f:
    writer.write(f)

② 解密 PDF 并保存為未加密的 PDF

from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader("encrypted.pdf")

if reader.is_encrypted:
    reader.decrypt("password123")

writer = PdfWriter()
for page in reader.pages:
    writer.add_page(page)

with open("decrypted.pdf", "wb") as f:
    writer.write(f)

章節(jié)三:Python 使用 python-docx 操作 Word

1、python-docx 庫介紹

  • 用途:用于創(chuàng)建和更新 .docx 文件。
  • 安裝
pip install python-docx

2、Python 讀取 Word 文檔內(nèi)容

1)Word 文檔結(jié)構(gòu)介紹

  • Document: 整個文檔
  • Paragraph: 段落(回車符分隔)
  • Run: 文本塊(具有相同樣式的連續(xù)文本)

2)python-docx 提取文字和文字塊兒

① python-docx 提取文字

from docx import Document

doc = Document("example.docx")

full_text = []
for para in doc.paragraphs:
    full_text.append(para.text)

print("\n".join(full_text))

② python-docx 提取文字塊兒

from docx import Document

doc = Document("example.docx")

for para in doc.paragraphs:
    for run in para.runs:
        print(run.text) # 打印每個樣式塊的文本

3)利用 Python 向 新建Word 文檔寫入內(nèi)容

① 添加段落

from docx import Document

doc = Document()
p = doc.add_paragraph('這是一個新段落。')

doc.save('test_save.docx')

② 添加文字塊兒

from docx import Document

doc = Document()
p = doc.add_paragraph('這是一個新段落。')
run = p.add_run('這是加粗的文字。')
run.bold = True
p.add_run('這是普通的文字。')
doc.save('test_save.docx')

③ 添加一個分頁

from docx import Document

doc = Document()
p = doc.add_paragraph('這是一個新段落。')
run = p.add_run('這是加粗的文字。')
run.bold = True
p.add_run('這是普通的文字。')
doc.add_page_break()

doc.save('test_save.docx')

④ 添加圖片

from docx import Document
from docx.shared import Inches

doc = Document()
p = doc.add_paragraph('這是一個新段落。')
run = p.add_run('這是加粗的文字。')
run.bold = True
p.add_run('這是普通的文字。')
# doc.add_page_break()
doc.add_picture('img.jpg', width=Inches(1.25)) # 需要 from docx.shared import Inches
doc.save('test_save.docx')

⑤ 添加表格

from docx import Document

doc = Document()
table = doc.add_table(rows=2, cols=2)
table.cell(0, 0).text = "A1"
table.cell(0, 1).text = "B1"
doc.save('test_save.docx')

⑥ 提取 Word 表格,并保存在 Excel 中

import pandas as pd
from docx import Document

doc = Document("test_save.docx")
tables_data = []

for table in doc.tables:
    for row in table.rows:
        row_data = [cell.text for cell in row.cells]
        tables_data.append(row_data)

df = pd.DataFrame(tables_data)
df.to_excel("word_tables.xlsx", index=False)

3、利用 Python 調(diào)整 Word 文檔樣式

1)修改文字字體樣式

from docx import Document
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn


doc = Document()
p = doc.add_paragraph()
run = p.add_run('自定義樣式文字')
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
# 設(shè)置中文字體需要特殊處理
run.font.name = '微軟雅黑'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')

doc.save('test_save.docx')

2)修改段落樣式

① 對齊樣式

from docx import Document
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH


doc = Document()
p = doc.add_paragraph()
run = p.add_run('自定義樣式文字')
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
# 設(shè)置中文字體需要特殊處理
run.font.name = '微軟雅黑'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中

doc.save('test_save.docx')

② 行間距調(diào)整

from docx import Document
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH


doc = Document()
p = doc.add_paragraph()
run = p.add_run('自定義樣式文字測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試')
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
# 設(shè)置中文字體需要特殊處理
run.font.name = '微軟雅黑'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中
p.paragraph_format.line_spacing = 1.5 # 1.5倍行距

doc.save('test_save.docx')

③ 段前與段后間距

from docx import Document
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH


doc = Document()
p = doc.add_paragraph()
run = p.add_run('自定義樣式文字測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試')
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
# 設(shè)置中文字體需要特殊處理
run.font.name = '微軟雅黑'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中
p.paragraph_format.line_spacing = 1.5 # 1.5倍行距

p.paragraph_format.space_before = Pt(12) # 段前12磅
p.paragraph_format.space_after = Pt(12)  # 段后12磅
p = doc.add_paragraph()
run = p.add_run('自定義樣式文字測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2測試2')

doc.save('test_save.docx')

注意:以上代碼示例需要配合相應(yīng)的文件環(huán)境運(yùn)行。使用前請確保已安裝 openpyxl, pandas, PyPDF2, pdfplumber, python-docx 等庫。

以上就是Python自動化處理Excel、Word、PDF文檔的操作大全的詳細(xì)內(nèi)容,更多關(guān)于Python處理Excel、Word、PDF文檔的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

沧源| 宣城市| 岳阳县| 米脂县| 河北省| 商水县| 宣威市| 深圳市| 鹤壁市| 虹口区| 西华县| 德惠市| 精河县| 昌平区| 岚皋县| 巴东县| 建水县| 五莲县| 甘谷县| 秦皇岛市| 屏东市| 陆川县| 霍山县| 台南市| 淮滨县| 托里县| 武夷山市| 曲周县| 辰溪县| 微博| 桑植县| 社旗县| 清水县| 重庆市| 讷河市| 祁阳县| 岚皋县| 丰台区| 黑河市| 宾川县| 成安县|