下面是一个示例Python程序,可以按照指定的列索引提取文件夹内所有Excel文件的指定列,并将数据汇总合并到一个新文件中。
1. 准备工作
首先,我们需要在Python中使用pandas库来处理Excel文件。如果你还没有安装pandas库,可以使用下面的命令来安装:
pip install pandas
然后,我们需要创建一个包含Excel文件的文件夹,并将这个文件夹的路径记录下来。
假设这个文件夹的路径为:C:\Users\UserName\Documents\ExcelFiles
。
2. 代码实现
import os
import pandas as pd
# 设置文件夹路径
folder_path = "C:\\Users\\UserName\\Documents\\ExcelFiles"
# 设置要提取的列的索引,假设要提取第2列和第4列
column_indices = [2, 4]
# 创建一个空的DataFrame
merged_df = pd.DataFrame()
# 遍历文件夹中所有的Excel文件
for filename in os.listdir(folder_path):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
# 使用pandas读取Excel文件的数据
filepath = os.path.join(folder_path, filename)
df = pd.read_excel(filepath)
# 按照列索引提取指定列的数据
selected_columns = df.iloc[:, column_indices]
# 将提取出来的数据添加到合并的DataFrame中
merged_df = pd.concat([merged_df, selected_columns])
# 将合并的DataFrame保存到新的Excel文件中
output_filepath = os.path.join(folder_path, "Merged.xlsx")
merged_df.to_excel(output_filepath, index=False)
这个程序的功能是先读取文件夹中所有的Excel文件,并按照指定的列索引提取指定列的数据,最终将所有Excel文件中提取出来的数据汇总到一个新的Excel文件中。
3. 示例说明
示例一
假设文件夹C:\Users\UserName\Documents\ExcelFiles
中包含以下两个Excel文件:
file1.xlsx
file2.xlsx
每个Excel文件中包含以下数据:
file1.xlsx
| A | B | C | D | E | F |
|-----|-----|-----|-----|-----|-----|
| 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 |
file2.xlsx
| A | B | C | D | E | F |
|-----|-----|-----|-----|-----|-----|
| 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 |
如果我们要提取第2列和第4列的数据,并将两个文件中的数据汇总到一个新文件中,可以使用以下的代码:
import os
import pandas as pd
folder_path = "C:\\Users\\UserName\\Documents\\ExcelFiles"
column_indices = [2, 4]
merged_df = pd.DataFrame()
for filename in os.listdir(folder_path):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
filepath = os.path.join(folder_path, filename)
df = pd.read_excel(filepath)
selected_columns = df.iloc[:, column_indices]
merged_df = pd.concat([merged_df, selected_columns])
output_filepath = os.path.join(folder_path, "Merged.xlsx")
merged_df.to_excel(output_filepath, index=False)
运行结果是生成一个新的Excel文件Merged.xlsx
,其内容为:
Merged.xlsx
| C | E |
|-----|-----|
| 3 | 5 |
| 9 | 11 |
| 15 | 17 |
| 21 | 23 |
示例二
现在假设文件夹C:\Users\UserName\Documents\ExcelFiles
中包含以下三个Excel文件:
file1.xlsx
file2.xlsx
file3.xls
每个Excel文件中包含以下数据:
file1.xlsx
| A | B | C | D | E | F |
|-----|-----|-----|-----|-----|-----|
| 1 | abc | 3 | efg | 5 | hij |
| 7 | klm | 9 | nop | 11 | qrs |
file2.xlsx
| A | B | C | D | EFG |
|-----|-----|-----|------|-----|
| 13 | uvw | 15 | xyz | 111 |
| 19 | ijk | 21 | rst | 222 |
file3.xls
| A | B | CDE |
|-----|-----|-----|
| 31 | 32 | abc |
| 33 | 34 | def |
如果我们要提取第2列和第4列的数据,并将三个文件中的数据汇总到一个新文件中,可以使用以下的代码:
import os
import pandas as pd
folder_path = "C:\\Users\\UserName\\Documents\\ExcelFiles"
column_indices = [1, 3]
merged_df = pd.DataFrame()
for filename in os.listdir(folder_path):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
filepath = os.path.join(folder_path, filename)
df = pd.read_excel(filepath)
selected_columns = df.iloc[:, column_indices]
merged_df = pd.concat([merged_df, selected_columns])
output_filepath = os.path.join(folder_path, "Merged.xlsx")
merged_df.to_excel(output_filepath, index=False)
运行结果是生成一个新的Excel文件Merged.xlsx
,其内容为:
Merged.xlsx
| B | D |
|-------|-------|
| abc | efg |
| klm | nop |
| uvw | xyz |
| ijk | rst |
| 32 | abc |
| 34 | def |
注意,这个程序可以同时处理.xlsx和.xls后缀的Excel文件。