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

Python使用openpyxl處理Excel文件的操作指南

 更新時間:2026年04月21日 09:25:59   作者:喚笙(SYL)  
openpyxl是用于讀寫.xlsx格式Excel文件的的Python第三方庫,支持操作工作表、單元格、設(shè)置樣式、插入圖表和處理大文件等功能,本文通過7個示例演示了openpyxl的基本用寫、讀取、樣式設(shè)置、數(shù)據(jù)處理和文件生成等功能,幫助讀者快速上握openpyxl的使用法

什么是 openpyxl?

openpyxl 是 Python 中用于讀寫 Excel 文件(.xlsx 格式)的第三方庫。它能讓您用 Python 程序自動處理 Excel 文件,比如:

  • 批量讀取數(shù)據(jù)
  • 自動生成報表
  • 修改表格格式
  • 合并多個 Excel 文件

主要功能

  • ? 讀取和寫入 .xlsx 文件
  • ? 操作工作表和單元格
  • ? 設(shè)置樣式和格式(字體、顏色、邊框等)
  • ? 插入圖表和公式
  • ? 處理大文件(支持只讀模式)

應(yīng)用場景

  • 數(shù)據(jù)處理:批量讀取 Excel 數(shù)據(jù)進行分析
  • 報表生成:自動生成格式化的 Excel 報表
  • 數(shù)據(jù)遷移:在不同系統(tǒng)間轉(zhuǎn)換數(shù)據(jù)格式
  • 自動化辦公:替代重復(fù)的手工 Excel 操作

基本概念

在開始示例之前,先了解幾個重要概念:

1. 工作簿和工作表

  • 工作簿(Workbook):整個 Excel 文件,相當(dāng)于一個容器
  • 工作表(Worksheet):工作簿中的單個表格,可以有多個

2. 單元格定位

  • A1 表示法:用列字母+行數(shù)字定位,如 A1B2
  • 坐標(biāo)表示法:用行列數(shù)字定位,如 (1, 1) 表示第1行第1列

3. 常用方法參數(shù)

方法/參數(shù)說明示例
load_workbook()打開已存在的文件wb = load_workbook('file.xlsx')
Workbook()創(chuàng)建新工作簿wb = Workbook()
active獲取當(dāng)前活動工作表ws = wb.active
cell(row, column)通過坐標(biāo)訪問單元格ws.cell(1, 1)
['A1']通過 A1 表示法訪問ws['A1']
.value獲取/設(shè)置單元格值cell.value = 'Hello'
save()保存文件wb.save('output.xlsx')

4. 樣式相關(guān)

  • Font:字體(大小、顏色、粗體等)
  • PatternFill:填充顏色
  • Border:邊框
  • Alignment:對齊方式

入門示例

示例 1:創(chuàng)建第一個 Excel 文件

目標(biāo):創(chuàng)建一個新的 Excel 文件,并寫入一些數(shù)據(jù)。

提示:這是最基礎(chǔ)的例子。首先需要安裝 openpyxl(pip install openpyxl),然后創(chuàng)建 Workbook 對象,獲取工作表,寫入數(shù)據(jù),最后保存。

from openpyxl import Workbook

# 第 1 步:創(chuàng)建新工作簿
wb = Workbook()

# 第 2 步:獲取活動工作表(默認(rèn)創(chuàng)建的第一個工作表)
ws = wb.active

# 第 3 步:設(shè)置工作表名稱
ws.title = "我的數(shù)據(jù)"

# 第 4 步:寫入數(shù)據(jù)(使用 A1 表示法)
ws['A1'] = '姓名'
ws['B1'] = '年齡'
ws['A2'] = '張三'
ws['B2'] = 25

# 第 5 步:保存文件
wb.save('示例.xlsx')
print("文件已創(chuàng)建!")

運行效果

  • 會在當(dāng)前目錄生成 示例.xlsx 文件
  • A1 單元格為"姓名",B1 為"年齡"
  • A2 單元格為"張三",B2 為 25

關(guān)鍵要點

  • 使用 Workbook() 創(chuàng)建新文件
  • active 獲取默認(rèn)工作表
  • 通過 ['A1'] 訪問單元格
  • 必須調(diào)用 save() 才能保存文件

示例 2:讀取現(xiàn)有文件

目標(biāo):打開一個已存在的 Excel 文件,讀取其中的數(shù)據(jù)。

提示:使用 load_workbook() 打開文件。注意文件路徑要正確,如果文件不存在會報錯。

from openpyxl import load_workbook

# 打開已存在的文件
wb = load_workbook('示例.xlsx')

# 獲取工作表(通過名稱)
ws = wb['我的數(shù)據(jù)']

# 讀取單元格值
name = ws['A1'].value
age = ws['B1'].value

print(f"A1 的值:{name}")
print(f"B1 的值:{age}")

# 讀取 A2 和 B2
print(f"姓名:{ws['A2'].value}, 年齡:{ws['B2'].value}")

運行效果

A1 的值:姓名
B1 的值:年齡
姓名:張三, 年齡:25

關(guān)鍵要點

  • load_workbook() 用于打開已存在的文件
  • 通過工作表名稱 wb['工作表名'] 獲取工作表
  • .value 獲取單元格的值

示例 3:使用坐標(biāo)方式訪問單元格

目標(biāo):學(xué)習(xí)用行列數(shù)字(坐標(biāo))的方式訪問單元格,這在循環(huán)中更方便。

提示cell(row, column) 方法用數(shù)字定位,row 和 column 都從 1 開始。這種方式在批量操作時比 A1 表示法更方便。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 寫入表頭
ws.cell(1, 1, '產(chǎn)品')  # 第1行第1列
ws.cell(1, 2, '價格')  # 第1行第2列
ws.cell(1, 3, '數(shù)量')  # 第1行第3列

# 寫入數(shù)據(jù)
ws.cell(2, 1, '蘋果')
ws.cell(2, 2, 5.5)
ws.cell(2, 3, 10)

ws.cell(3, 1, '香蕉')
ws.cell(3, 2, 3.2)
ws.cell(3, 3, 20)

wb.save('商品清單.xlsx')
print("文件已創(chuàng)建!")

運行效果

  • 創(chuàng)建包含 3 列數(shù)據(jù)的表格
  • 第1行是表頭,第2-3行是數(shù)據(jù)

關(guān)鍵要點

  • cell(row, column, value) 三個參數(shù):行、列、值
  • 也可以先獲取單元格再賦值:ws.cell(1, 1).value = '產(chǎn)品'
  • 坐標(biāo)從 1 開始,不是 0

示例 4:批量寫入數(shù)據(jù)

目標(biāo):使用循環(huán)批量寫入多行數(shù)據(jù),這是實際應(yīng)用中最常見的場景。

提示:結(jié)合 Python 的循環(huán)和列表,可以高效地批量寫入數(shù)據(jù)。注意行號從 1 開始,通常第 1 行是表頭。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 表頭
headers = ['姓名', '部門', '工資']
for col, header in enumerate(headers, start=1):
    ws.cell(1, col, header)

# 數(shù)據(jù)列表
employees = [
    ['張三', '技術(shù)部', 8000],
    ['李四', '銷售部', 6000],
    ['王五', '人事部', 5500],
    ['趙六', '技術(shù)部', 9000],
]

# 批量寫入數(shù)據(jù)
for row, employee in enumerate(employees, start=2):  # 從第2行開始
    for col, value in enumerate(employee, start=1):
        ws.cell(row, col, value)

wb.save('員工信息.xlsx')
print(f"已寫入 {len(employees)} 條員工數(shù)據(jù)")

運行效果

  • 創(chuàng)建包含 4 名員工信息的表格
  • 第1行是表頭,第2-5行是員工數(shù)據(jù)

關(guān)鍵要點

  • enumerate(start=1) 從指定數(shù)字開始計數(shù)
  • 外層循環(huán)控制行,內(nèi)層循環(huán)控制列
  • 表頭通常在第1行,數(shù)據(jù)從第2行開始

示例 5:讀取整個表格

目標(biāo):讀取 Excel 文件中的所有數(shù)據(jù),并打印出來。

提示:使用 max_rowmax_column 獲取工作表的行列范圍,然后循環(huán)讀取所有單元格。這是讀取整個表格的標(biāo)準(zhǔn)方法。

from openpyxl import load_workbook

wb = load_workbook('員工信息.xlsx')
ws = wb.active

# 獲取表格的最大行數(shù)和列數(shù)
max_row = ws.max_row
max_column = ws.max_column

print(f"表格大?。簕max_row} 行 × {max_column} 列\(zhòng)n")

# 讀取所有數(shù)據(jù)
for row in range(1, max_row + 1):
    row_data = []
    for col in range(1, max_column + 1):
        cell_value = ws.cell(row, col).value
        row_data.append(cell_value)
    print(row_data)

運行效果

表格大?。? 行 × 3 列

['姓名', '部門', '工資']
['張三', '技術(shù)部', 8000]
['李四', '銷售部', 6000]
['王五', '人事部', 5500]
['趙六', '技術(shù)部', 9000]

關(guān)鍵要點

  • max_rowmax_column 獲取實際使用的行列數(shù)
  • range(1, max_row + 1) 包含最后一行
  • 空單元格的值為 None

示例 6:設(shè)置單元格樣式

目標(biāo):給表格添加樣式,讓表頭更醒目(加粗、背景色)。

提示:openpyxl 的樣式功能很強大。需要導(dǎo)入 Font(字體)和 PatternFill(填充)。樣式需要賦值給單元格的 fontfill 屬性。

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment

wb = Workbook()
ws = wb.active

# 寫入表頭
headers = ['姓名', '分?jǐn)?shù)', '等級']
for col, header in enumerate(headers, start=1):
    cell = ws.cell(1, col, header)
    
    # 設(shè)置字體:加粗、白色、14號
    cell.font = Font(bold=True, color='FFFFFF', size=14)
    
    # 設(shè)置背景色:藍色
    cell.fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')
    
    # 設(shè)置對齊:居中
    cell.alignment = Alignment(horizontal='center', vertical='center')

# 寫入數(shù)據(jù)
data = [
    ['張三', 95, '優(yōu)秀'],
    ['李四', 78, '良好'],
    ['王五', 65, '及格'],
]

for row, row_data in enumerate(data, start=2):
    for col, value in enumerate(row_data, start=1):
        ws.cell(row, col, value)

# 調(diào)整列寬(讓內(nèi)容顯示完整)
ws.column_dimensions['A'].width = 12
ws.column_dimensions['B'].width = 10
ws.column_dimensions['C'].width = 10

wb.save('成績單.xlsx')
print("帶樣式的文件已創(chuàng)建!")

運行效果

  • 表頭為藍色背景、白色加粗字體、居中
  • 數(shù)據(jù)行保持默認(rèn)樣式
  • 列寬自動調(diào)整

關(guān)鍵要點

  • Font() 設(shè)置字體樣式(bold、color、size)
  • PatternFill() 設(shè)置背景色(顏色用十六進制代碼)
  • Alignment() 設(shè)置對齊方式
  • column_dimensions 調(diào)整列寬

示例 7:實戰(zhàn)應(yīng)用 - 數(shù)據(jù)統(tǒng)計

目標(biāo):讀取員工數(shù)據(jù),按部門統(tǒng)計平均工資,并生成新的報表。

提示:這是一個綜合示例,結(jié)合了讀取、處理、寫入和樣式設(shè)置。實際項目中的 openpyxl 使用就是這樣的結(jié)構(gòu)。

from openpyxl import load_workbook, Workbook
from openpyxl.styles import Font, PatternFill

# 讀取原始數(shù)據(jù)
wb = load_workbook('員工信息.xlsx')
ws = wb.active

# 統(tǒng)計各部門工資
departments = {}
for row in range(2, ws.max_row + 1):  # 跳過表頭
    dept = ws.cell(row, 2).value  # 部門在第2列
    salary = ws.cell(row, 3).value  # 工資在第3列
    
    if dept not in departments:
        departments[dept] = []
    departments[dept].append(salary)

# 創(chuàng)建統(tǒng)計報表
wb_new = Workbook()
ws_new = wb_new.active
ws_new.title = "部門統(tǒng)計"

# 寫入表頭
ws_new['A1'] = '部門'
ws_new['B1'] = '人數(shù)'
ws_new['C1'] = '平均工資'

# 設(shè)置表頭樣式
header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')
header_font = Font(bold=True, color='FFFFFF')

for col in ['A1', 'B1', 'C1']:
    cell = ws_new[col]
    cell.fill = header_fill
    cell.font = header_font

# 寫入統(tǒng)計數(shù)據(jù)
row = 2
for dept, salaries in departments.items():
    ws_new.cell(row, 1, dept)
    ws_new.cell(row, 2, len(salaries))
    avg_salary = sum(salaries) / len(salaries)
    ws_new.cell(row, 3, round(avg_salary, 2))
    row += 1

wb_new.save('部門統(tǒng)計.xlsx')
print("統(tǒng)計報表已生成!")

運行效果

  • 讀取員工信息.xlsx
  • 按部門統(tǒng)計人數(shù)和平均工資
  • 生成新的統(tǒng)計報表文件

關(guān)鍵要點

  • 實際應(yīng)用會結(jié)合數(shù)據(jù)處理邏輯
  • 可以讀取一個文件,生成另一個文件
  • 樣式讓報表更專業(yè)

其他選擇

xlrd / xlwt - 老式庫

用于處理 .xls 格式(舊版 Excel):

import xlrd
wb = xlrd.open_workbook('file.xls')

適用場景:需要處理舊版 Excel 文件(.xls)

pandas - 數(shù)據(jù)分析

pandas 也可以讀寫 Excel,更適合數(shù)據(jù)分析:

import pandas as pd
df = pd.read_excel('file.xlsx')
df.to_excel('output.xlsx')

適用場景:數(shù)據(jù)分析、處理表格數(shù)據(jù)

xlsxwriter - 只寫模式

只能寫入,不能讀取,但性能更好:

import xlsxwriter
wb = xlsxwriter.Workbook('file.xlsx')

適用場景:只需要生成 Excel 文件,不需要讀取

如何選擇?

場景推薦
讀寫 .xlsx 文件openpyxl ?
數(shù)據(jù)分析處理pandas
只生成文件xlsxwriter
處理舊版 .xlsxlrd / xlwt

openpyxl 的優(yōu)勢

  • ? 功能完整,讀寫都支持
  • ? 支持樣式、圖表等高級功能

總結(jié):openpyxl 是處理 Excel 文件的標(biāo)準(zhǔn)方案。掌握本文的 7 個示例,就能處理絕大多數(shù)日常需求。

以上就是Python使用openpyxl處理Excel文件的操作指南的詳細內(nèi)容,更多關(guān)于Python openpyxl處理Excel文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • TensorFlow實現(xiàn)Softmax回歸模型

    TensorFlow實現(xiàn)Softmax回歸模型

    這篇文章主要介紹了TensorFlow實現(xiàn)Softmax回歸模型,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python處理SQLite數(shù)據(jù)庫的方法

    python處理SQLite數(shù)據(jù)庫的方法

    這篇文章主要介紹了python處理SQLite數(shù)據(jù)庫的方法,python處理數(shù)據(jù)庫非常簡單。而且不同類型的數(shù)據(jù)庫處理邏輯方式大同小異。本文以sqlite數(shù)據(jù)庫為例,介紹一下python操作數(shù)據(jù)庫的方,需要的朋友可以參考下,希望能幫助到大家
    2022-02-02
  • 在Python下進行UDP網(wǎng)絡(luò)編程的教程

    在Python下進行UDP網(wǎng)絡(luò)編程的教程

    這篇文章主要介紹了在Python下進行UDP網(wǎng)絡(luò)編程的教程,UDP編程是Python網(wǎng)絡(luò)編程部分的基礎(chǔ)知識,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python 中 requests 與 aiohttp 在實際項目中的選擇策略詳解

    Python 中 requests 與 aiohttp 在實際項目中的

    本文主要介紹了Python爬蟲開發(fā)中常用的兩個庫requests和aiohttp的使用方法及其區(qū)別,通過實際項目案例展示了這兩個庫的應(yīng)用,并從并發(fā)需求、項目復(fù)雜度、維護成本和性能要求等方面提出了在實際項目中選擇這兩個庫的策略,感興趣的朋友一起看看吧
    2025-01-01
  • python?獲取圖片中文字的四種辦法

    python?獲取圖片中文字的四種辦法

    本文主要介紹了python?獲取圖片中文字的幾種辦法,主要使用光學(xué)字符識別(OCR)技術(shù),本文主要介紹了4種第三方庫,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 基于pandas中expand的作用詳解

    基于pandas中expand的作用詳解

    今天小編就為大家分享一篇基于pandas中expand的作用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python實現(xiàn)標(biāo)記數(shù)組的連通域

    Python實現(xiàn)標(biāo)記數(shù)組的連通域

    這篇文章主要為大家詳細介紹了如何通過Python實現(xiàn)標(biāo)記數(shù)組的連通域,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2023-04-04
  • Python中的字典遍歷備忘

    Python中的字典遍歷備忘

    這篇文章主要介紹了Python中的字典遍歷備忘,本文列舉了多種字典遍歷方法,適合初學(xué)者查看,并簡單講解了interitems和iterms區(qū)別,需要的朋友可以參考下
    2015-01-01
  • pyecharts中from pyecharts import options as opts報錯問題以及解決辦法

    pyecharts中from pyecharts import options 

    本文主要介紹了pyecharts中from pyecharts import options as opts報錯問題以及解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python 集合set中 add與update區(qū)別介紹

    python 集合set中 add與update區(qū)別介紹

    這篇文章主要介紹了python 集合set中 add與update區(qū)別介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評論

迁安市| 六安市| 永福县| 鹤庆县| 喀喇沁旗| 襄樊市| 尼木县| 夏河县| 青冈县| 望江县| 黑山县| 河北区| 江口县| 沙洋县| 常州市| 卢龙县| 自贡市| 佛冈县| 巴南区| 宿松县| 焉耆| 玉溪市| 禹州市| 绥芬河市| 博客| 乐安县| 平利县| 余姚市| 嘉峪关市| 华安县| 武威市| 砚山县| 天台县| 五指山市| 栾城县| 新乡市| 华蓥市| 方正县| 廉江市| 聂拉木县| 德安县|