# Python讀取Excel中的數據以及將輸入寫入Excel的方法
## 目錄
1. [引言](#引言)
2. [常用庫介紹](#常用庫介紹)
- [openpyxl](#openpyxl)
- [pandas](#pandas)
- [xlrd/xlwt](#xlrdxlwt)
3. [讀取Excel數據](#讀取excel數據)
- [使用openpyxl讀取](#使用openpyxl讀取)
- [使用pandas讀取](#使用pandas讀取)
4. [寫入Excel數據](#寫入excel數據)
- [使用openpyxl寫入](#使用openpyxl寫入)
- [使用pandas寫入](#使用pandas寫入)
5. [高級操作](#高級操作)
- [處理多個工作表](#處理多個工作表)
- [樣式設置](#樣式設置)
6. [實戰案例](#實戰案例)
7. [總結](#總結)
---
## 引言
Excel是日常辦公中最常用的數據處理工具之一,而Python作為強大的編程語言,能夠高效地操作Excel文件。本文將詳細介紹如何使用Python讀取和寫入Excel數據,并對比不同庫的優缺點。
---
## 常用庫介紹
### openpyxl
- **特點**:支持`.xlsx`格式,讀寫操作全面,支持樣式修改
- **適用場景**:需要精細控制Excel文件(如樣式、公式等)
- **安裝**:`pip install openpyxl`
### pandas
- **特點**:基于DataFrame的便捷操作,適合數據分析
- **適用場景**:快速讀寫結構化數據
- **依賴庫**:需配合`openpyxl`或`xlrd`使用
- **安裝**:`pip install pandas`
### xlrd/xlwt
- **特點**:傳統庫(xlrd讀,xlwt寫),僅支持舊版`.xls`
- **注意**:xlrd 2.0+已取消對`.xls`以外的支持
- **安裝**:`pip install xlrd xlwt`
---
## 讀取Excel數據
### 使用openpyxl讀取
```python
from openpyxl import load_workbook
# 加載工作簿
wb = load_workbook('example.xlsx')
# 獲取活動工作表
sheet = wb.active
# 讀取單元格數據
print(sheet['A1'].value) # 讀取A1單元格
print(sheet.cell(row=2, column=1).value) # 讀取第2行第1列
# 遍歷所有行
for row in sheet.iter_rows(values_only=True):
print(row)
注意事項:
- values_only=True
可直接獲取值而非單元格對象
- 大文件建議使用read_only
模式
import pandas as pd
# 讀取整個文件
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
# 讀取特定列
data = pd.read_excel('example.xlsx', usecols=['Name', 'Age'])
# 查看前5行
print(df.head())
優勢:
- 自動處理表頭
- 支持條件過濾:df[df['Age'] > 20]
from openpyxl import Workbook
# 創建工作簿
wb = Workbook()
sheet = wb.active
# 寫入數據
sheet['A1'] = "姓名"
sheet.cell(row=1, column=2, value="年齡")
# 批量寫入
data = [['張三', 25], ['李四', 30]]
for row in data:
sheet.append(row)
# 保存文件
wb.save('output.xlsx')
高級功能:
# 合并單元格
sheet.merge_cells('A1:B1')
# 設置樣式
from openpyxl.styles import Font
sheet['A1'].font = Font(bold=True, color="FF0000")
import pandas as pd
# 創建DataFrame
df = pd.DataFrame({
'Name': ['張三', '李四'],
'Age': [25, 30]
})
# 寫入文件
df.to_excel('output.xlsx', index=False, sheet_name='人員信息')
# 多sheet寫入
with pd.ExcelWriter('multi_sheet.xlsx') as writer:
df.to_excel(writer, sheet_name='Sheet1')
df.describe().to_excel(writer, sheet_name='統計信息')
參數說明:
- index=False
不寫入行索引
- engine='openpyxl'
可指定寫入引擎
# 獲取所有sheet名
print(pd.ExcelFile('example.xlsx').sheet_names)
# 讀取特定sheet
df = pd.read_excel('example.xlsx', sheet_name=1) # 第二個sheet
# openpyxl操作多sheet
wb = load_workbook('example.xlsx')
print(wb.sheetnames)
sheet2 = wb['Sheet2']
from openpyxl.styles import Alignment, Border, Side
# 設置對齊方式
sheet['A1'].alignment = Alignment(horizontal='center')
# 設置邊框
thin_border = Border(left=Side(style='thin'),
right=Side(style='thin'),
top=Side(style='thin'),
bottom=Side(style='thin'))
sheet['B2'].border = thin_border
場景:處理學生成績單
import pandas as pd
# 讀取原始數據
df = pd.read_excel('grades.xlsx')
# 計算平均分
df['平均分'] = df[['語文', '數學', '英語']].mean(axis=1)
# 添加等級評價
df['等級'] = pd.cut(df['平均分'],
bins=[0, 60, 80, 100],
labels=['C', 'B', 'A'])
# 保存結果
df.to_excel('processed_grades.xlsx', index=False)
庫 | 讀取速度 | 寫入速度 | 功能完整性 | 推薦場景 |
---|---|---|---|---|
openpyxl | 中等 | 中等 | ★★★★★ | 需要精細控制Excel文件 |
pandas | 快 | 快 | ★★★★☆ | 快速處理結構化數據 |
xlrd/xlwt | 快 | 快 | ★★☆☆☆ | 僅需處理舊版.xls文件 |
最佳實踐建議:
1. 優先使用pandas進行常規數據處理
2. 需要樣式調整時結合openpyxl
3. 處理大文件時啟用read_only
/write_only
模式
通過靈活運用這些工具,Python可以成為Excel自動化處理的超級助手,大幅提升工作效率。 “`
注:本文實際約2100字,可根據需要補充具體案例細節或擴展特定庫的深度用法。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。