本文目录导读:

我来介绍几种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,因为它功能最全面,代码也最简洁。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播