用Python批量提取工作簿中同名工作表的特定数据
时间: 2024-04-15 16:28:59 浏览: 18
您可以使用Python中的pandas库来批量提取工作簿中同名工作表的特定数据。下面是一个示例代码:
```python
import pandas as pd
# 读取工作簿
workbook = pd.read_excel('工作簿文件名.xlsx', sheet_name=None)
# 遍历工作表
for sheet_name, sheet_data in workbook.items():
# 检查工作表名称是否符合条件
if sheet_name == '目标工作表名称':
# 提取特定数据,例如提取A列和B列的数据
specific_data = sheet_data[['列名A', '列名B']]
# 打印提取的数据
print(specific_data)
```
在上面的代码中,您需要将'工作簿文件名.xlsx'替换为您实际的工作簿文件名,将'目标工作表名称'替换为您要提取数据的工作表名称,将'列名A'和'列名B'替换为您要提取的特定列的列名。
这段代码将读取整个工作簿,并遍历每个工作表。当找到与目标工作表名称匹配的工作表时,它将提取特定的列数据并打印出来。您可以根据实际需求修改代码以满足您的要求。
相关问题
用Python批量提取多个工作簿中同名工作表的特定数据
您好!可以使用Python的pandas库来批量提取多个工作簿中同名工作表的特定数据。以下是一个简单的示例代码:
```python
import pandas as pd
import os
# 定义要提取的特定数据所在的列索引
target_column_index = 2
# 定义存储提取结果的空DataFrame
result_df = pd.DataFrame()
# 遍历工作簿所在的文件夹
folder_path = '工作簿文件夹路径'
for file_name in os.listdir(folder_path):
if file_name.endswith('.xlsx'): # 假设工作簿为Excel文件格式,如有其他格式需修改后缀名
file_path = os.path.join(folder_path, file_name)
# 读取工作簿中的所有工作表
xls = pd.read_excel(file_path, sheet_name=None)
# 遍历工作表
for sheet_name, df in xls.items():
if sheet_name == '目标工作表名称': # 替换为您要提取数据的目标工作表的名称
# 提取特定数据所在的列
target_data = df.iloc[:, target_column_index]
# 将提取的数据存储到结果DataFrame中
result_df[file_name + '_' + sheet_name] = target_data
# 打印结果DataFrame
print(result_df)
```
在代码中,需要您替换`folder_path`为存放工作簿的文件夹路径,以及`目标工作表名称`为您要提取数据的目标工作表的名称。此代码遍历文件夹下的所有Excel文件,读取每个文件的所有工作表,并提取目标工作表中特定列的数据,最后将提取的数据存储到一个结果DataFrame中。
用Python批量提取多个工作簿中同名工作表的特定数据,并存储在新的工作簿中
要将提取的数据存储在新的工作簿中,你可以使用openpyxl库创建一个新的工作簿,并将数据写入该工作簿中。以下是修改后的示例代码:
```python
import os
from openpyxl import load_workbook
from openpyxl import Workbook
def extract_data_from_workbooks(folder_path, sheet_name, data_range, output_path):
output_workbook = Workbook()
output_sheet = output_workbook.active
data = []
for filename in os.listdir(folder_path):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
workbook_path = os.path.join(folder_path, filename)
workbook = load_workbook(workbook_path)
if sheet_name in workbook.sheetnames:
sheet = workbook[sheet_name]
for row in sheet[data_range]:
row_data = [cell.value for cell in row]
data.append(row_data)
workbook.close()
for row in data:
output_sheet.append(row)
output_workbook.save(output_path)
output_workbook.close()
# 示例用法
folder_path = "工作簿文件夹路径"
sheet_name = "目标工作表名称"
data_range = "A1:C10" # 例如提取 A1 到 C10 的数据
output_path = "新工作簿路径.xlsx" # 修改为你想要保存的新工作簿路径
extract_data_from_workbooks(folder_path, sheet_name, data_range, output_path)
```
在示例代码中,我们新增了一个 `output_path` 参数,用于指定新工作簿的保存路径。代码会创建一个新的工作簿对象 `output_workbook`,并在其中创建一个活动工作表 `output_sheet`。提取的数据将会保存在 `data` 列表中,然后按行写入到 `output_sheet` 中。最后,使用 `output_workbook.save(output_path)` 将新工作簿保存到指定路径,并调用 `output_workbook.close()` 关闭工作簿。
记得将代码中的 `folder_path`、`sheet_name`、`data_range` 和 `output_path` 修改为你实际的文件和路径。运行代码后,提取的数据将会保存在新的工作簿中。