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

Python實(shí)現(xiàn)自動(dòng)化操作Excel的方法詳解

 更新時(shí)間:2025年11月27日 09:17:24   作者:小莊-Python辦公  
本篇文章將作為一份全面的新手指南,帶你從零開始學(xué)習(xí)如何使用?Python?自動(dòng)化操作?Excel?文件,無(wú)論你是數(shù)據(jù)分析師、辦公室文員,還是任何需要處理?Excel?的人,本文都將為你打開一扇通往高效工作的大門

引言

你是否還在為 Excel 中的重復(fù)性工作而煩惱?每天花費(fèi)大量時(shí)間進(jìn)行數(shù)據(jù)整理、格式調(diào)整、報(bào)表生成?如果是這樣,那么恭喜你,你來(lái)對(duì)地方了!Python 作為一門強(qiáng)大且易學(xué)的編程語(yǔ)言,能讓你徹底告別這些繁瑣的手動(dòng)操作,實(shí)現(xiàn) Excel 自動(dòng)化,極大地提高工作效率。

本篇文章將作為一份全面的新手指南,帶你從零開始學(xué)習(xí)如何使用 Python 自動(dòng)化操作 Excel 文件。無(wú)論你是數(shù)據(jù)分析師、辦公室文員,還是任何需要處理 Excel 的人,本文都將為你打開一扇通往高效工作的大門。

為什么選擇 Python 自動(dòng)化 Excel

在深入學(xué)習(xí)之前,我們先來(lái)了解一下為什么 Python 是自動(dòng)化 Excel 的絕佳選擇:

  • 效率提升:將耗時(shí)數(shù)小時(shí)甚至數(shù)天的工作自動(dòng)化,只需幾秒鐘即可完成。
  • 減少錯(cuò)誤:機(jī)器執(zhí)行任務(wù)比手動(dòng)操作更精確,大大降低人為錯(cuò)誤率。
  • 可重復(fù)性:編寫一次腳本,可反復(fù)用于處理類似任務(wù),無(wú)需每次從頭開始。
  • 數(shù)據(jù)處理能力:Python 擁有強(qiáng)大的數(shù)據(jù)處理庫(kù)(如 Pandas),能與 Excel 自動(dòng)化無(wú)縫結(jié)合,實(shí)現(xiàn)更復(fù)雜的數(shù)據(jù)分析。
  • 易學(xué)易用:Python 語(yǔ)法簡(jiǎn)潔明了,即使是編程新手也能快速上手。
  • 生態(tài)豐富:擁有多個(gè)成熟的庫(kù)來(lái)操作 Excel,功能全面。

前置準(zhǔn)備

在開始編寫代碼之前,我們需要做一些簡(jiǎn)單的準(zhǔn)備工作。

1. 安裝 Python

如果你的電腦尚未安裝 Python,請(qǐng)前往 Python 官方網(wǎng)站下載并安裝最新版本。建議選擇 3.x 系列的穩(wěn)定版本。

  • 下載地址https://www.python.org/downloads/
  • 安裝時(shí)請(qǐng)務(wù)必勾選 “Add Python to PATH” 選項(xiàng),這樣可以方便地在命令行中運(yùn)行 Python。

安裝完成后,打開命令行工具(Windows 用戶搜索 CMD 或 PowerShell,macOS/Linux 用戶打開終端),輸入以下命令檢查 Python 是否安裝成功:

python --version

如果顯示 Python 版本號(hào),則表示安裝成功。

2. 安裝必要的庫(kù):openpyxl

Python 有多個(gè)庫(kù)可以操作 Excel 文件,其中 openpyxl 是一個(gè)功能強(qiáng)大且廣泛使用的庫(kù),專門用于讀寫 .xlsx 格式的 Excel 文件(Excel 2010 及更高版本)。對(duì)于新手來(lái)說(shuō),它是非常好的入門選擇。

在命令行中輸入以下命令來(lái)安裝 openpyxl

pip install openpyxl

pip 是 Python 的包管理工具,它會(huì)自動(dòng)下載并安裝 openpyxl 及其所有依賴項(xiàng)。

Python 操作 Excel 核心庫(kù):openpyxl 簡(jiǎn)介

openpyxl 庫(kù)的核心概念包括:

  • Workbook (工作簿):代表一個(gè)完整的 Excel 文件。
  • Worksheet (工作表):代表工作簿中的一個(gè)選項(xiàng)卡(如 Sheet1, Sheet2 等)。
  • Cell (單元格):代表工作表中的一個(gè)最小單位,存儲(chǔ)具體的數(shù)據(jù)。

理解這三個(gè)概念,你就能很好地掌握 openpyxl 的基本操作。

實(shí)戰(zhàn)演練:用 Python 自動(dòng)化 Excel

現(xiàn)在,我們準(zhǔn)備好通過(guò)實(shí)際代碼來(lái)學(xué)習(xí)如何操作 Excel 了!

1. 創(chuàng)建一個(gè)新的 Excel 文件

我們將從創(chuàng)建一個(gè)全新的 Excel 工作簿開始。

from openpyxl import Workbook

# 創(chuàng)建一個(gè)新的工作簿對(duì)象
# 默認(rèn)會(huì)創(chuàng)建一個(gè)名為 'Sheet' 的工作表
wb = Workbook()

# 獲取當(dāng)前活動(dòng)的工作表 (默認(rèn)創(chuàng)建的第一個(gè)工作表)
ws = wb.active

# 可以給工作表設(shè)置一個(gè)標(biāo)題
ws.title = "我的第一個(gè)工作表"

# 保存工作簿到文件
# 注意:如果文件已存在,此操作會(huì)覆蓋原文件
wb.save("我的第一個(gè)Excel文件.xlsx")

print("Excel 文件 '我的第一個(gè)Excel文件.xlsx' 已成功創(chuàng)建!")

運(yùn)行這段代碼后,你會(huì)在腳本所在的目錄下找到一個(gè)名為 我的第一個(gè)Excel文件.xlsx 的文件。

2. 寫入數(shù)據(jù)到單元格

有兩種主要方式向單元格寫入數(shù)據(jù):直接指定單元格坐標(biāo)或使用 append() 方法。

2.1. 直接指定單元格寫入數(shù)據(jù)

你可以像操作字典一樣,通過(guò) ws['A1'] 的方式來(lái)訪問和寫入單元格。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "銷售數(shù)據(jù)"

# 寫入標(biāo)題行
ws['A1'] = "產(chǎn)品"
ws['B1'] = "銷量"
ws['C1'] = "價(jià)格"

# 寫入數(shù)據(jù)
ws['A2'] = "蘋果"
ws['B2'] = 100
ws['C2'] = 5.5

ws['A3'] = "香蕉"
ws['B3'] = 150
ws['C3'] = 3.0

ws['A4'] = "橘子"
ws['B4'] = 80
ws['C4'] = 4.0

wb.save("銷售報(bào)告.xlsx")
print("數(shù)據(jù)已寫入 '銷售報(bào)告.xlsx'。")

2.2. 使用append()方法寫入行數(shù)據(jù)

append() 方法非常方便,它會(huì)將你傳入的列表或元組作為一行數(shù)據(jù),添加到工作表的最后一行。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "員工信息"

# 寫入標(biāo)題行
ws.append(["姓名", "年齡", "部門", "入職日期"])

# 寫入多行數(shù)據(jù)
data = [
    ["張三", 30, "銷售部", "2020-01-15"],
    ["李四", 25, "市場(chǎng)部", "2021-03-01"],
    ["王五", 35, "技術(shù)部", "2019-07-20"]
]

for row_data in data:
    ws.append(row_data)

wb.save("員工信息表.xlsx")
print("數(shù)據(jù)已寫入 '員工信息表.xlsx'。")

3. 讀取 Excel 文件中的數(shù)據(jù)

讀取數(shù)據(jù)是自動(dòng)化任務(wù)中非常常見的一步。

from openpyxl import load_workbook

# 加載現(xiàn)有的工作簿
try:
    wb = load_workbook("銷售報(bào)告.xlsx")
    # 獲取活動(dòng)工作表
    ws = wb.active

    print(f"工作表 '{ws.title}' 中的數(shù)據(jù):")

    # 遍歷所有行和列讀取數(shù)據(jù)
    # ws.iter_rows() 可以迭代所有行,返回單元格元組
    # min_row, max_row, min_col, max_col 可以指定遍歷范圍
    for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
        row_values = [cell.value for cell in row]
        print(row_values)

    # 也可以通過(guò)指定單元格讀取
    print(f"\n特定單元格數(shù)據(jù):")
    print(f"A1: {ws['A1'].value}")
    print(f"B2: {ws['B2'].value}")

except FileNotFoundError:
    print("錯(cuò)誤:文件 '銷售報(bào)告.xlsx' 不存在,請(qǐng)先運(yùn)行寫入數(shù)據(jù)的代碼創(chuàng)建文件。")

4. 修改現(xiàn)有 Excel 文件

修改現(xiàn)有文件與創(chuàng)建文件和寫入數(shù)據(jù)類似,只是需要先加載文件。

from openpyxl import load_workbook

try:
    wb = load_workbook("銷售報(bào)告.xlsx")
    ws = wb.active

    # 修改特定單元格的數(shù)據(jù)
    ws['B2'] = 120  # 將蘋果的銷量從100改為120
    ws['C2'] = 5.8  # 修改蘋果的價(jià)格

    # 添加一行新數(shù)據(jù)
    ws.append(["梨", 90, 6.2])

    # 保存修改,可以覆蓋原文件,也可以保存為新文件
    wb.save("更新后的銷售報(bào)告.xlsx") # 保存為新文件
    # wb.save("銷售報(bào)告.xlsx") # 覆蓋原文件
    print("Excel 文件 '銷售報(bào)告.xlsx' 已成功更新并保存為 '更新后的銷售報(bào)告.xlsx'。")

except FileNotFoundError:
    print("錯(cuò)誤:文件 '銷售報(bào)告.xlsx' 不存在,請(qǐng)先運(yùn)行寫入數(shù)據(jù)的代碼創(chuàng)建文件。")

5. 插入/刪除行和列

openpyxl 提供了 insert_rows(), delete_rows(), insert_cols(), delete_cols() 等方法來(lái)操作行和列。

from openpyxl import load_workbook

try:
    wb = load_workbook("銷售報(bào)告.xlsx")
    ws = wb.active

    print("原始數(shù)據(jù)行數(shù):", ws.max_row)

    # 在第 2 行之前插入 1 行
    # 參數(shù)1: 插入起始行號(hào),參數(shù)2: 插入行數(shù)
    ws.insert_rows(2, 1)
    ws['A2'] = "插入的新行"
    ws['B2'] = "示例數(shù)據(jù)"

    print("插入行后的數(shù)據(jù)行數(shù):", ws.max_row)

    # 刪除第 4 行 (現(xiàn)在是原來(lái)的第 3 行)
    ws.delete_rows(4, 1)
    print("刪除行后的數(shù)據(jù)行數(shù):", ws.max_row)

    # 在第 2 列 (B列) 之前插入 1 列
    ws.insert_cols(2, 1)
    ws['B1'] = "新列標(biāo)題"
    ws['B2'] = "新列數(shù)據(jù)"

    # 刪除第 3 列 (C列)
    ws.delete_cols(3, 1)

    wb.save("修改行和列的銷售報(bào)告.xlsx")
    print("Excel 文件 '修改行和列的銷售報(bào)告.xlsx' 已成功創(chuàng)建。")

except FileNotFoundError:
    print("錯(cuò)誤:文件 '銷售報(bào)告.xlsx' 不存在。")

6. 操作多個(gè)工作表

一個(gè) Excel 文件通常包含多個(gè)工作表。

from openpyxl import Workbook

wb = Workbook()

# 獲取默認(rèn)創(chuàng)建的活動(dòng)工作表
ws1 = wb.active
ws1.title = "數(shù)據(jù)總覽"

# 創(chuàng)建一個(gè)新的工作表
ws2 = wb.create_sheet("詳細(xì)信息")
ws2['A1'] = "這是詳細(xì)信息表"

# 創(chuàng)建另一個(gè)工作表,并指定位置 (索引從0開始)
ws3 = wb.create_sheet("報(bào)表", 0) # 插入到第一個(gè)位置
ws3['A1'] = "這是報(bào)表"

# 打印所有工作表名稱
print("所有工作表名稱:", wb.sheetnames)

# 通過(guò)名稱獲取工作表
sheet_detail = wb["詳細(xì)信息"]
sheet_detail['A2'] = "更多數(shù)據(jù)"

wb.save("多工作表文件.xlsx")
print("Excel 文件 '多工作表文件.xlsx' 已成功創(chuàng)建,包含多個(gè)工作表。")

7. 設(shè)置單元格樣式 (基礎(chǔ))

openpyxl 允許你設(shè)置單元格的字體、顏色、邊框、對(duì)齊方式等。這里我們展示一個(gè)簡(jiǎn)單的字體加粗示例。

from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment

try:
    wb = load_workbook("銷售報(bào)告.xlsx")
    ws = wb.active

    # 設(shè)置 A1 單元格字體為粗體,紅色
    font_style = Font(name='Arial', size=12, bold=True, color="FF0000") # FF0000 是紅色
    ws['A1'].font = font_style

    # 設(shè)置 B1 單元格背景色為黃色
    fill_style = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid") # FFFF00 是黃色
    ws['B1'].fill = fill_style

    # 設(shè)置 C1 單元格居中對(duì)齊
    alignment_style = Alignment(horizontal='center', vertical='center')
    ws['C1'].alignment = alignment_style

    # 設(shè)置邊框 (以 A1 為例)
    thin_border = Border(left=Side(style='thin'),
                         right=Side(style='thin'),
                         top=Side(style='thin'),
                         bottom=Side(style='thin'))
    ws['A1'].border = thin_border


    wb.save("帶樣式銷售報(bào)告.xlsx")
    print("Excel 文件 '帶樣式銷售報(bào)告.xlsx' 已創(chuàng)建,并設(shè)置了單元格樣式。")

except FileNotFoundError:
    print("錯(cuò)誤:文件 '銷售報(bào)告.xlsx' 不存在。")

常見問題與注意事項(xiàng)

在使用 Python 自動(dòng)化 Excel 時(shí),新手可能會(huì)遇到一些常見問題:

1. 文件路徑問題

相對(duì)路徑 vs. 絕對(duì)路徑:當(dāng)你只寫文件名時(shí)(如 wb.save("report.xlsx")),Python 會(huì)在當(dāng)前腳本運(yùn)行的目錄下查找或創(chuàng)建文件。如果文件不在當(dāng)前目錄,或者你需要指定一個(gè)特定位置,請(qǐng)使用絕對(duì)路徑 (C:/Users/YourName/Documents/report.xlsx/home/YourName/report.xlsx)。

Windows 路徑反斜杠:在 Windows 系統(tǒng)中,路徑通常使用反斜杠 \。但在 Python 字符串中,反斜杠是轉(zhuǎn)義字符。正確的做法是:

  • 使用雙反斜杠:"C:\\Users\\..."
  • 使用正斜杠:"C:/Users/..." (推薦,跨平臺(tái)兼容性更好)
  • 使用原始字符串:r"C:\Users\..."

2. 數(shù)據(jù)類型轉(zhuǎn)換

openpyxl 會(huì)自動(dòng)處理 Python 數(shù)據(jù)類型到 Excel 單元格類型的轉(zhuǎn)換(例如,整數(shù)、浮點(diǎn)數(shù)、字符串、日期)。但如果你從 Excel 讀取日期數(shù)據(jù),它會(huì)返回一個(gè) datetime 對(duì)象,你可以根據(jù)需要進(jìn)行格式化。

3. 大文件性能

對(duì)于包含數(shù)萬(wàn)甚至數(shù)十萬(wàn)行數(shù)據(jù)的大型 Excel 文件,直接讀寫可能會(huì)比較慢并占用大量?jī)?nèi)存。openpyxl 提供了 read_only 模式用于快速讀取和 write_only 模式用于快速寫入。對(duì)于新手,可以暫時(shí)不深入研究,但在處理大文件時(shí)請(qǐng)記住這些選項(xiàng)。

4. 保存文件時(shí)覆蓋

wb.save("文件名.xlsx") 操作會(huì)覆蓋同名文件,請(qǐng)務(wù)必小心。在修改現(xiàn)有文件時(shí),最好先保存為新的文件名,確認(rèn)無(wú)誤后再考慮覆蓋。

更多高級(jí)操作方向

本文只是介紹了 openpyxl 的基礎(chǔ)功能,你可以進(jìn)一步探索:

  • 使用 Pandas 處理數(shù)據(jù):結(jié)合 Pandas 庫(kù)可以更高效地進(jìn)行數(shù)據(jù)清洗、分析和轉(zhuǎn)換,然后將結(jié)果寫入 Excel。
  • 創(chuàng)建圖表openpyxl 也可以用來(lái)在 Excel 中創(chuàng)建各種圖表(如柱狀圖、折線圖)。
  • 操作公式:讀取或?qū)懭?Excel 公式。
  • 數(shù)據(jù)驗(yàn)證:設(shè)置單元格的數(shù)據(jù)驗(yàn)證規(guī)則。
  • 條件格式:根據(jù)條件自動(dòng)設(shè)置單元格格式。
  • 使用 xlwings:如果你需要在 Windows 上直接控制已打開的 Excel 應(yīng)用程序,或者需要與 Excel VBA 宏交互,xlwings 是一個(gè)強(qiáng)大的選擇。

總結(jié)與展望

通過(guò)本篇文章的學(xué)習(xí),你已經(jīng)掌握了使用 Python openpyxl 庫(kù)自動(dòng)化操作 Excel 的基本技能,包括創(chuàng)建、讀寫、修改、插入/刪除行和列以及設(shè)置基礎(chǔ)樣式。這些技能足以幫助你解決日常工作中大部分的重復(fù)性 Excel 任務(wù)。

Python 自動(dòng)化 Excel 的世界廣闊而充滿可能,它將你的數(shù)據(jù)處理能力提升到一個(gè)新的水平。不要停止探索,嘗試將你學(xué)到的知識(shí)應(yīng)用到實(shí)際工作中,你會(huì)發(fā)現(xiàn)你的工作效率將得到顯著提升!

現(xiàn)在,是時(shí)候告別重復(fù)勞動(dòng),讓 Python 成為你的得力助手,讓數(shù)據(jù)處理飛起來(lái)吧!

以上就是Python實(shí)現(xiàn)自動(dòng)化操作Excel的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python自動(dòng)化操作Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python使用Random隨機(jī)生成列表的方法實(shí)例

    python使用Random隨機(jī)生成列表的方法實(shí)例

    在日常的生活工作和系統(tǒng)游戲等設(shè)計(jì)和制作時(shí),經(jīng)常會(huì)碰到產(chǎn)生隨機(jī)數(shù),用來(lái)解決問題,下面這篇文章主要給大家介紹了關(guān)于python使用Random隨機(jī)生成列表的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Pandas?Query方法使用深度總結(jié)

    Pandas?Query方法使用深度總結(jié)

    大多數(shù)Pandas用戶都熟悉iloc[]和loc[]索引器方法,用于檢索行和列。但是隨著檢索數(shù)據(jù)的規(guī)則變得越來(lái)越復(fù)雜,這些方法也隨之變得更加復(fù)雜而臃腫。本文將展示如何使用?query()?方法對(duì)數(shù)據(jù)框執(zhí)行查詢,感興趣的可以了解一下
    2022-07-07
  • pytorch中torch.stack()函數(shù)用法解讀

    pytorch中torch.stack()函數(shù)用法解讀

    這篇文章主要介紹了pytorch中torch.stack()函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Python matplotlib繪制實(shí)時(shí)數(shù)據(jù)動(dòng)畫

    Python matplotlib繪制實(shí)時(shí)數(shù)據(jù)動(dòng)畫

    Matplotlib作為Python的2D繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。本文將利用Matplotlib庫(kù)繪制實(shí)時(shí)數(shù)據(jù)動(dòng)畫,感興趣的可以了解一下
    2022-03-03
  • 2021年值得向Python開發(fā)者推薦的VS Code擴(kuò)展插件

    2021年值得向Python開發(fā)者推薦的VS Code擴(kuò)展插件

    這篇文章主要介紹了2021年值得向Python開發(fā)者推薦的VS Code擴(kuò)展插件,幫助大家更好的利用vscode進(jìn)行python的開發(fā),感興趣的朋友可以了解下
    2021-01-01
  • python文件生成exe之在pycharm使用pyinstaller指令方式

    python文件生成exe之在pycharm使用pyinstaller指令方式

    在PyCharm中使用PyInstaller打包Python文件成可執(zhí)行文件(.exe)的步驟,首先,在PyCharm中安裝PyInstaller插件,然后打開項(xiàng)目的設(shè)置,添加PyInstaller插件,接著,在終端中導(dǎo)航到Python文件所在目錄,使用pip安裝PyInstaller,最后使用命令行生成可執(zhí)行文件
    2026-03-03
  • 淺談Django自定義模板標(biāo)簽template_tags的用處

    淺談Django自定義模板標(biāo)簽template_tags的用處

    這篇文章主要介紹了淺談Django自定義模板標(biāo)簽template_tags的用處,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • python實(shí)現(xiàn)異步回調(diào)機(jī)制代碼分享

    python實(shí)現(xiàn)異步回調(diào)機(jī)制代碼分享

    本文介紹了python實(shí)現(xiàn)異步回調(diào)機(jī)制的功能,大家參考使用吧
    2014-01-01
  • 對(duì)Python 網(wǎng)絡(luò)設(shè)備巡檢腳本的實(shí)例講解

    對(duì)Python 網(wǎng)絡(luò)設(shè)備巡檢腳本的實(shí)例講解

    下面小編就為大家分享一篇對(duì)Python 網(wǎng)絡(luò)設(shè)備巡檢腳本的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Pandas在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中的應(yīng)用及優(yōu)勢(shì)

    Pandas在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中的應(yīng)用及優(yōu)勢(shì)

    Pandas是Python中用于數(shù)據(jù)處理和數(shù)據(jù)分析的庫(kù),它提供了靈活的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作工具,包括Series和DataFrame等。Pandas還支持大量數(shù)據(jù)操作和數(shù)據(jù)分析功能,包括數(shù)據(jù)清洗、轉(zhuǎn)換、篩選、聚合、透視表、時(shí)間序列分析等
    2023-04-04

最新評(píng)論

金昌市| 营山县| 金山区| 五指山市| 万宁市| 陇川县| 兴国县| 西安市| 鹤庆县| 多伦县| 大姚县| 财经| 同仁县| 东辽县| 明水县| 义乌市| 天气| 汉中市| 武城县| 遂川县| 昭苏县| 平乐县| 年辖:市辖区| 麟游县| 武夷山市| 女性| 西充县| 新宾| 邢台县| 涞源县| 梅河口市| 泾川县| 江安县| 广州市| 大荔县| 冷水江市| 麦盖提县| 历史| 庆云县| 石阡县| 牙克石市|