本文目录导读:

我来介绍几种Python读取Excel表格的常用方法:
使用 pandas 库(最常用)
安装
pip install pandas openpyxl
读取Excel文件
import pandas as pd
# 读取整个工作表
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 读取所有工作表
# df = pd.read_excel('data.xlsx', sheet_name=None)
# 查看数据
print(df.head()) # 前5行
print(df.info()) # 数据信息
# 读取指定列
df = pd.read_excel('data.xlsx', usecols=['姓名', '年龄'])
使用 openpyxl 库(直接操作)
from openpyxl import load_workbook
# 加载工作簿
wb = load_workbook('data.xlsx')
# 获取工作表
ws = wb['Sheet1'] # 按名称获取
# ws = wb.active # 获取当前活动工作表
# 读取所有数据
for row in ws.iter_rows(values_only=True):
print(row)
# 读取指定单元格
cell_value = ws['A1'].value # 读取A1单元格
cell_value = ws.cell(row=1, column=1).value # 另一种方式
# 读取指定范围
for row in ws.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3, values_only=True):
print(row)
# 转换为列表
data = []
for row in ws.iter_rows(values_only=True):
data.append(list(row))
print(data)
使用 xlrd 库(只读)
import xlrd
# 打开Excel文件
workbook = xlrd.open_workbook('data.xlsx')
# 获取所有工作表
sheet_names = workbook.sheet_names()
print(sheet_names)
# 获取指定工作表
sheet = workbook.sheet_by_name('Sheet1')
# sheet = workbook.sheet_by_index(0) # 按索引
# 读取数据
for row in range(sheet.nrows):
row_data = sheet.row_values(row)
print(row_data)
# 读取特定单元格
cell_value = sheet.cell_value(0, 0) # 行,列
实际案例
import pandas as pd
from datetime import datetime
def read_excel_data(file_path, sheet_name=0):
"""
读取Excel文件并返回DataFrame
"""
try:
# 读取Excel文件
df = pd.read_excel(file_path, sheet_name=sheet_name)
# 数据清洗和处理
df = df.dropna() # 删除空行
print(f"成功读取 {len(df)} 行数据")
print(f"列名: {list(df.columns)}")
return df
except Exception as e:
print(f"读取Excel文件出错: {e}")
return None
# 使用示例
df = read_excel_data('员工信息.xlsx')
if df is not None:
# 查看数据摘要
print(df.describe())
# 保存为CSV
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
处理多个Sheet
import pandas as pd
def read_all_sheets(file_path):
"""
读取Excel文件的所有工作表
"""
# 读取所有工作表
excel_file = pd.ExcelFile(file_path)
# 获取所有工作表名称
sheet_names = excel_file.sheet_names
# 创建字典存储每个工作表的数据
all_data = {}
for sheet_name in sheet_names:
df = pd.read_excel(file_path, sheet_name=sheet_name)
all_data[sheet_name] = df
print(f"工作表 '{sheet_name}' 读取完成,共 {len(df)} 行")
return all_data
# 使用示例
data_dict = read_all_sheets('data.xlsx')
# 访问特定工作表
df_sheet1 = data_dict['Sheet1']
print(df_sheet1.head())
常见问题解决
import pandas as pd
# 1. 处理编码问题
df = pd.read_excel('data.xlsx', encoding='utf-8')
# 2. 处理日期格式
df = pd.read_excel('data.xlsx', parse_dates=['日期列'])
# 3. 处理列类型
df = pd.read_excel('data.xlsx', dtype={'ID列': str})
# 4. 跳过指定行
df = pd.read_excel('data.xlsx', skiprows=2) # 跳过前2行
# 5. 读取指定行数
df = pd.read_excel('data.xlsx', nrows=100) # 只读取前100行
# 6. 处理表头
df = pd.read_excel('data.xlsx', header=None) # 无表头
选择建议
- pandas: 数据分析场景,功能强大
- openpyxl: 需要写入或修改Excel
- xlrd: 只读操作,兼容旧版Excel
最推荐使用pandas,因为它功能最全面,代码也最简洁。