Skip to content

读取Excel文件

Pandas 可以方便地读取 Excel 文件,支持 .xls 和 .xlsx 格式。

基础读取

python
import pandas as pd

# 读取Excel文件
df = pd.read_excel('data.xlsx')

# 读取指定工作表
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
df = pd.read_excel('data.xlsx', sheet_name=0)  # 按索引

常用参数

python
# 指定列名行
df = pd.read_excel('data.xlsx', header=0)  # 第一行为列名
df = pd.read_excel('data.xlsx', header=None)  # 无列名

# 自定义列名
df = pd.read_excel('data.xlsx', names=['A', 'B', 'C'])

# 指定索引列
df = pd.read_excel('data.xlsx', index_col=0)
df = pd.read_excel('data.xlsx', index_col='ID')

# 选择特定列
df = pd.read_excel('data.xlsx', usecols='A:C')  # Excel列名
df = pd.read_excel('data.xlsx', usecols=[0, 2, 3])  # 按位置
df = pd.read_excel('data.xlsx', usecols=['姓名', '年龄'])  # 按名称

数据范围

python
# 跳过行
df = pd.read_excel('data.xlsx', skiprows=2)  # 跳过前2行
df = pd.read_excel('data.xlsx', skiprows=[0, 2, 4])  # 跳过指定行

# 读取指定行数
df = pd.read_excel('data.xlsx', nrows=100)

# 读取指定区域
df = pd.read_excel('data.xlsx', usecols='B:D', skiprows=2, nrows=10)

读取多个工作表

python
# 读取所有工作表
all_sheets = pd.read_excel('data.xlsx', sheet_name=None)
print(all_sheets.keys())  # 查看所有工作表名

# 读取多个指定工作表
sheets = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
df1 = sheets['Sheet1']
df2 = sheets['Sheet2']

# 读取多个工作表(按索引)
sheets = pd.read_excel('data.xlsx', sheet_name=[0, 1, 2])

数据类型控制

python
# 指定数据类型
df = pd.read_excel('data.xlsx', dtype={'年龄': int, '工资': float})

# 解析日期
df = pd.read_excel('data.xlsx', parse_dates=['日期'])

# 将指定列转为字符串
df = pd.read_excel('data.xlsx', dtype={'编号': str})

处理合并单元格

python
# 默认情况下,合并单元格的值会填充到所有相关单元格

# 自定义处理合并单元格
df = pd.read_excel('data.xlsx')

# 前向填充
df.fillna(method='ffill', inplace=True)

写入Excel

python
# 基础写入
df.to_excel('output.xlsx', index=False)

# 写入指定工作表
df.to_excel('output.xlsx', sheet_name='数据')

# 写入多个工作表
with pd.ExcelWriter('output.xlsx') as writer:
    df1.to_excel(writer, sheet_name='Sheet1')
    df2.to_excel(writer, sheet_name='Sheet2')

# 追加模式
with pd.ExcelWriter('output.xlsx', mode='a') as writer:
    df.to_excel(writer, sheet_name='新数据')

样式设置

python
# 使用openpyxl设置样式
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill

df.to_excel('styled.xlsx', index=False)

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

# 设置标题样式
for cell in ws[1]:
    cell.font = Font(bold=True, color='FFFFFF')
    cell.fill = PatternFill(start_color='366092', end_color='366092', fill_type='solid')

wb.save('styled.xlsx')

Excel 是常用的数据交换格式,掌握 Excel 的读写操作非常重要。