用python写一个自动读取指定文件的所有格式的excel表,并把不同excel表里名称相同的工作簿合并到一个工作簿中,最后形成一个新的excel表的代码
时间: 2023-03-12 13:47:12 浏览: 111
可以使用Python的openpyxl库来实现这个功能。例如,首先使用openpyxl.load_workbook()方法从指定文件中读取excel表,然后可以使用openpyxl.worksheet.merge_cells()将不同表格中名称相同的工作簿合并到一起,最后可以使用openpyxl.workbook.save()方法将合并的结果保存为新的excel表。
相关问题
就是有600个excel文件,文件名在一个表格列里,要打开这600个文件读取该文件内一个单元格值,然后回写到总表里相应文件名后面的单元格内,python实现
### 回答1:
你可以使用Python的Pandas库来实现这个任务。以下是一个实现的代码示例:
```python
import pandas as pd
# 读取所有Excel文件
excel_files = ["file1.xlsx", "file2.xlsx", ..., "file600.xlsx"]
dfs = []
for file in excel_files:
dfs.append(pd.read_excel(file))
# 合并所有数据到一个DataFrame
df = pd.concat(dfs)
# 选择一个单元格并将其写入总表中
cell_value = df.iloc[0, 0]
total_df = pd.DataFrame({"filename": excel_files, "cell_value": [cell_value]*len(excel_files)})
# 将结果写入到一个Excel文件中
total_df.to_excel("total.xlsx", index=False)
```
上述代码假设所有Excel文件都在当前工作目录中,并且它们的文件名已知并存储在一个名为`excel_files`的列表中。该代码首先使用一个循环读取所有Excel文件,并将它们存储在一个名为`dfs`的DataFrame列表中。然后,使用`pd.concat()`将所有DataFrame合并为一个名为`df`的DataFrame。接下来,选择一个单元格的值并将其写入到一个名为`total_df`的新DataFrame中,其中包括Excel文件名和单元格值。最后,使用`total_df.to_excel()`将结果写入到一个名为`total.xlsx`的Excel文件中。
### 回答2:
你可以使用Python的pandas和openpyxl库来实现这个任务。
首先,导入所需的库和模块:
```python
import pandas as pd
from openpyxl import load_workbook
```
然后,使用pandas库读取总表格和文件名列表:
```python
# 读取总表格
df_total = pd.read_excel('总表.xlsx')
# 读取文件名列表
df_filenames = pd.read_excel('文件名列表.xlsx')
```
接下来,创建一个空的数据框来存储从每个文件中读取的单元格值:
```python
# 创建空的数据框
df_values = pd.DataFrame(columns=['文件名', '单元格值'])
```
然后,使用for循环迭代文件名列表中的每个文件名,并打开相应的文件:
```python
for filename in df_filenames['文件名']:
# 打开文件
wb = load_workbook(filename)
# 获取单元格值
cell_value = wb['Sheet1']['A1'].value
# 关闭文件
wb.close()
# 将文件名和单元格值添加到数据框
df_values = df_values.append({'文件名': filename, '单元格值': cell_value}, ignore_index=True)
```
最后,将数据框中的值合并回总表格中的相应文件名后面的单元格:
```python
# 合并数据框和总表格
df_merged = df_total.merge(df_values, on='文件名')
# 将单元格值回写到总表格
df_merged.to_excel('总表.xlsx', index=False)
```
这样,你就可以使用Python打开这600个文件,读取每个文件中指定单元格的值,并将它们回写到总表格中相应文件名后面的单元格内。
### 回答3:
在Python中实现这个需求,我们可以使用openpyxl库来处理Excel文件。首先,需要使用pandas库来读取总表格中的文件名列,并创建一个新的列来存储读取到的单元格值。然后,使用openpyxl库中的load_workbook方法逐个打开600个Excel文件,并读取指定单元格的值。最后,将读取到的值回写到总表格中相应文件名后面的单元格内。
以下是实现代码的一个示例:
```python
import pandas as pd
from openpyxl import load_workbook
# 读取总表格
total_table = pd.read_excel('总表.xlsx')
file_names = total_table['文件名'].tolist()
# 创建一个新列来存储读取到的单元格值
total_table['单元格值'] = None
# 逐个打开Excel文件并读取指定单元格的值
for file_name in file_names:
file_path = file_name + '.xlsx'
wb = load_workbook(file_path)
ws = wb.active
cell_value = ws['A1'].value
# 将读取到的值回写到总表格中相应文件名后面的单元格内
total_table.loc[total_table['文件名'] == file_name, '单元格值'] = cell_value
# 将结果保存回总表格文件
total_table.to_excel('总表.xlsx', index=False)
```
该代码假设总表格文件名为"总表.xlsx",并且文件名列名为"文件名",需要在代码中根据实际情况进行修改。另外,假设需要读取的单元格为每个Excel文件的"A1"单元格,需要根据实际需要修改为其他单元格。
运行以上代码后,会将读取到的每个Excel文件中指定单元格的值回写到总表格中相应的单元格中,并将结果保存回总表格文件中。
现在有一个文件夹,里面有若干后缀为xlsx的文件,可以用python实现获取这些文件的内容,并汇总到一个表里吗
可以的,你可以使用Python中的pandas库来实现。具体步骤如下:
1. 首先,需要安装pandas库。可以使用以下命令在命令行中安装:
```
pip install pandas
```
2. 导入pandas库和os库,os库用来获取文件列表:
```python
import pandas as pd
import os
```
3. 使用os库的listdir()函数获取文件夹中所有xlsx文件的文件名,存储在一个列表中:
```python
folder_path = '/path/to/folder' # 文件夹路径
file_list = os.listdir(folder_path)
xlsx_list = [file_name for file_name in file_list if file_name.endswith('.xlsx')]
```
4. 使用pandas库的read_excel()函数读取每个xlsx文件的内容,并将它们存储在一个列表中:
```python
data_list = []
for file_name in xlsx_list:
file_path = os.path.join(folder_path, file_name) # 文件路径
data = pd.read_excel(file_path)
data_list.append(data)
```
5. 使用pandas库的concat()函数将所有数据合并为一个表:
```python
all_data = pd.concat(data_list, ignore_index=True)
```
最后,all_data就是汇总后的表,你可以根据需要进行后续处理。
阅读全文