要将一个Excel文件中的数据每1000条划分为一个新的Excel文件,最后剩余的数据(不足1000条)也保留为一个新的Excel文件,可以使用Python的pandas
库来实现。pandas
支持高效的数据处理和Excel文件的读取/写入。下面是一个完整的示例代码,演示了如何实现这个需求:
安装依赖
首先确保安装了pandas
和openpyxl
,后者是pandas
用来处理Excel文件的引擎:
pip install pandas openpyxl
示例代码
import pandas as pd
# 读取原始 Excel 文件
input_file = 'input.xlsx' # 需要替换为你的文件路径
df = pd.read_excel(input_file)
# 定义每个新文件的最大行数
chunk_size = 1000
# 计算需要分成多少个文件
num_chunks = len(df) // chunk_size + (1 if len(df) % chunk_size != 0 else 0)
# 分割数据并保存到多个新文件中
for i in range(num_chunks):
start_row = i * chunk_size
end_row = (i + 1) * chunk_size
# 获取当前块的数据
chunk_df = df.iloc[start_row:end_row]
# 保存为新的 Excel 文件
output_file = f'output_{i + 1}.xlsx'
chunk_df.to_excel(output_file, index=False, engine='openpyxl')
print(f'已保存: {output_file}')
print('分割完成!')
代码解析
-
读取Excel文件:
- 使用
pandas.read_excel()
函数读取原始Excel文件,假设文件名为input.xlsx
。你可以根据需要修改文件路径。
- 使用
-
定义分割大小:
chunk_size = 1000
设置每个Excel文件的最大行数。
-
计算需要分割成多少个文件:
- 计算总行数,并根据每个文件的大小(1000行)来确定需要分成多少个文件。通过
len(df) // chunk_size
计算完整的1000行块,剩余部分用(1 if len(df) % chunk_size != 0 else 0)
来处理。
- 计算总行数,并根据每个文件的大小(1000行)来确定需要分成多少个文件。通过
-
分割数据并保存:
- 使用
iloc[start_row:end_row]
获取每一块数据,并用to_excel()
保存为新的Excel文件。文件名使用output_1.xlsx
,output_2.xlsx
等,自动编号。
- 使用
-
输出文件名:
- 每次保存时打印出文件名,确认分割结果。
示例输入和输出
假设输入的 input.xlsx
中有 2500 行数据:
output_1.xlsx
包含第 1 到 1000 行数据。output_2.xlsx
包含第 1001 到 2000 行数据。output_3.xlsx
包含第 2001 到 2500 行数据。
其他注意事项
-
Excel表格大小:如果数据特别大(例如几百万行),可以考虑分块读取和处理,以避免内存不足的情况。
-
输出格式:如果有样式、公式等复杂内容需要保留,可以使用
openpyxl
来读取并处理更复杂的Excel文件,但这会增加代码的复杂度。