openpyxl之合并多个数据并修改列名
现有九个Excel表格名称为ABCDEFGHI,要求将这九个表格的第一列数据提取合并至一个新Excel表中命名为J,并且在J表中将ABCDEFGHI表中的第一列的列名对应修改为ABCDEFGHI
求大佬指教{:9_221:}{:9_221:} {:9_221:} 本帖最后由 歌者文明清理员 于 2023-4-17 18:09 编辑
您可以使用openpyxl库实现这个功能,具体的步骤如下:
import openpyxl
# 创建新的Excel文件J.xlsx,并获取其活动工作表
new_workbook = openpyxl.Workbook()
new_sheet = new_workbook.active
new_sheet.title = 'J'
# 遍历A至I这九个文件
for filename in ['A.xlsx', 'B.xlsx', 'C.xlsx', 'D.xlsx', 'E.xlsx', 'F.xlsx', 'G.xlsx', 'H.xlsx', 'I.xlsx']:
workbook = openpyxl.load_workbook(filename)
sheet = workbook.active
# 获取当前文件的第一列数据
column_data = ]
# 将当前文件名对应的列名设置为第一列的值
sheet.column_dimensions['A'].width = 20
sheet['A1'] = filename[:-5] # 去掉文件名中的.xlsx后缀
sheet['A1'].font = openpyxl.styles.Font(bold=True)
# 将第一列数据追加到新Excel表J的第一列中
new_sheet.append(column_data)
# 修改新Excel表J中的第一行为文件名
new_sheet.cell(row=1, column=len(new_sheet.columns)).value = filename[:-5]
new_sheet.cell(row=1, column=len(new_sheet.columns)).font = openpyxl.styles.Font(bold=True)
# 保存新Excel表J
new_workbook.save('J.xlsx')
解释一下代码流程:
[*]首先,在代码开头创建了新的Excel文件并获取了其中的活动工作表。
[*]然后,遍历A至I这九个文件,对于每个文件,首先获取其第一列的数据,并将该文件名对应的列名设置为第一列的值,然后将该文件的第一列追加到新Excel表J的第一列中。
[*]最后,修改新Excel表J的第一行为文件名,并保存该文件。
你可以使用openpyxl库来实现这个任务。首先,确保你已经安装了openpyxl库。如果还没有安装,请运行以下命令进行安装:
pip install openpyxl
接下来,你可以使用以下代码来实现你的需求:
import openpyxl
def merge_worksheets(filenames, output_file):
# 创建一个新的工作簿
merged_wb = openpyxl.Workbook()
merged_ws = merged_wb.active
# 遍历文件名
for index, filename in enumerate(filenames, start=1):
# 读取当前工作簿
wb = openpyxl.load_workbook(filename)
ws = wb.active
# 提取第一列数据
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=1):
for cell in row:
new_cell = merged_ws.cell(row=cell.row, column=index, value=cell.value)
# 修改列名
merged_ws.cell(row=1, column=index, value=chr(ord('A') + index - 1))
# 保存新的工作簿
merged_wb.save(output_file)
# 输入文件名列表和输出文件名
input_files = ['A.xlsx', 'B.xlsx', 'C.xlsx', 'D.xlsx', 'E.xlsx', 'F.xlsx', 'G.xlsx', 'H.xlsx', 'I.xlsx']
output_file = 'J.xlsx'
# 合并工作表
merge_worksheets(input_files, output_file)
这段代码将遍历输入的文件名列表,从每个工作簿的第一列提取数据并合并到新工作簿的新工作表中。同时,将列名修改为对应的A到I。最后,将新工作簿保存为指定的输出文件。
isdkz 发表于 2023-4-17 18:16
你可以使用openpyxl库来实现这个任务。首先,确保你已经安装了openpyxl库。如果还没有安装,请运行以下命令 ...
提问:如果ABCD是文字呢?如Excel文件名为一二三四五六七八九,合并后各列的列名分别为一二三四五六七八九 王大可2000 发表于 2023-4-17 21:54
提问:如果ABCD是文字呢?如Excel文件名为一二三四五六七八九,合并后各列的列名分别为一二三四五六七八 ...
你可以稍微修改一下之前的代码,将列名更改为给定的文本列名。以下是相应的修改:
import openpyxl
def merge_worksheets(filenames, column_names, output_file):
# 创建一个新的工作簿
merged_wb = openpyxl.Workbook()
merged_ws = merged_wb.active
# 遍历文件名
for index, filename in enumerate(filenames, start=1):
# 读取当前工作簿
wb = openpyxl.load_workbook(filename)
ws = wb.active
# 提取第一列数据
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=1):
for cell in row:
new_cell = merged_ws.cell(row=cell.row, column=index, value=cell.value)
# 修改列名
merged_ws.cell(row=1, column=index, value=column_names)
# 保存新的工作簿
merged_wb.save(output_file)
# 输入文件名列表和输出文件名
input_files = ['一.xlsx', '二.xlsx', '三.xlsx', '四.xlsx', '五.xlsx', '六.xlsx', '七.xlsx', '八.xlsx', '九.xlsx']
column_names = ['一', '二', '三', '四', '五', '六', '七', '八', '九']
output_file = '合并后的表格.xlsx'
# 合并工作表
merge_worksheets(input_files, column_names, output_file)
现在,将文件名列表和列名列表传递给merge_worksheets函数,将输入文件名列表中的工作簿合并为一个新的工作簿,并将列名设置为对应的column_names列表中的文本。
isdkz 发表于 2023-4-17 21:57
你可以稍微修改一下之前的代码,将列名更改为给定的文本列名。以下是相应的修改:
谢谢 王大可2000 发表于 2023-4-17 22:08
谢谢
不客气,如果答案对你有帮助的话,给个最佳答案支持一下呗!{:5_92:}
页:
[1]