python批量读取excel表格
时间: 2025-06-25 21:15:24 浏览: 10
### 批量读取多个Excel文件
为了实现批量读取多个Excel文件的功能,可以通过`os`模块遍历目标目录下所有的Excel文件,并逐一使用`pandas`或`openpyxl`库进行处理。以下是详细的解决方案:
#### 方法一:使用 Pandas 批量读取 Excel 文件
通过 `glob` 或 `os.walk()` 遍历指定路径下的所有 `.xlsx` 文件,并逐个加载到 DataFrame 中。
```python
import os
import pandas as pd
def batch_read_excel_pandas(directory, sheet_name=0):
all_data = [] # 存储每个Excel文件的内容
for filename in os.listdir(directory): # 列举目录中的所有文件
if filename.endswith('.xlsx') or filename.endswith('.xls'): # 过滤Excel文件
file_path = os.path.join(directory, filename)
try:
data = pd.read_excel(file_path, sheet_name=sheet_name) # 加载单个Excel文件
data['source_file'] = filename # 添加来源文件名作为新列
all_data.append(data)
print(f"成功读取 {filename}")
except Exception as e:
print(f"无法读取 {filename}: {e}")
combined_df = pd.concat(all_data, ignore_index=True) # 合并所有DataFrame
return combined_df
if __name__ == "__main__":
directory = "./excels/" # 替换为目标目录
result = batch_read_excel_pandas(directory)
print(result.head())
```
此代码会将同一目录下的所有Excel文件按指定的工作表(默认第一个工作表)读入内存,并将其合并成一个单一的 DataFrame[^1]。
---
#### 方法二:使用 OpenPyXL 批量读取 Excel 文件
如果需要更精细地控制数据读取过程,则可以选择 `openpyxl` 库来完成类似的任务。
```python
from openpyxl import load_workbook
import os
def batch_read_excel_openpyxl(directory):
results = []
for filename in os.listdir(directory):
if filename.endswith(".xlsx"):
filepath = os.path.join(directory, filename)
try:
wb = load_workbook(filepath, data_only=True) # 设置data_only为True以获取计算后的单元格值
ws = wb.active
rows = list(ws.values) # 将每一行转换为列表
header = rows[0]
rest_of_rows = rows[1:]
for row in rest_of_rows:
entry = dict(zip(header, row)) # 转换为字典形式
entry["source"] = filename # 记录源文件名
results.append(entry)
print(f"成功读取 {filename}")
except Exception as e:
print(f"无法读取 {filename}: {e}")
return results
if __name__ == "__main__":
directory = "./excels/"
records = batch_read_excel_openpyxl(directory)
for record in records[:5]:
print(record)
```
该脚本利用 `openpyxl` 的功能逐步解析每一个 Excel 工作簿,并提取其中的数据存储在一个统一的 Python 字典列表中[^2]。
---
#### 注意事项
- **性能优化**:当面对大量大尺寸的 Excel 文件时,应考虑分批处理或将部分逻辑转移到数据库或其他高效工具中。
- **异常捕获**:在实际应用中需增强错误检测机制,确保程序能够优雅应对损坏或者格式不符合预期的文件。
- **资源管理**:对于超大规模数据集而言,一次性加载全部内容可能导致内存溢出;此时可采用流式读写方式减少占用空间。
阅读全文
相关推荐
















