使用Python拆分Excel列至独立文件(openpyxl问题求助)
解决Excel拆分列生成独立工作簿的问题
问题核心
你的代码之所以每次保存整个工作表,是因为直接保存了原始工作簿,没有创建新工作簿来单独存放A列+目标列的组合数据。下面提供两种解决方案:
方案1:使用openpyxl实现
适合需要精细控制单元格的场景,代码逻辑如下:
- 加载原始Excel文件
- 遍历目标列(B、C...)
- 为每一列新建工作簿,复制A列和当前列的数据
- 保存新工作簿
from openpyxl import Workbook, load_workbook # 加载原始工作簿 original_wb = load_workbook('billingTest.xlsx') original_ws = original_wb.active # 获取A列所有单元格(含表头) column_a = original_ws['A'] # 遍历从第2列开始的所有列(跳过A列) for col_num, col in enumerate(original_ws.iter_cols(min_col=2), start=1): # 新建空白工作簿和工作表 new_wb = Workbook() new_ws = new_wb.active # 复制A列到新表的第一列 for row_idx, cell in enumerate(column_a, start=1): new_ws.cell(row=row_idx, column=1, value=cell.value) # 复制当前列到新表的第二列 for row_idx, cell in enumerate(col, start=1): new_ws.cell(row=row_idx, column=2, value=cell.value) # 保存新文件,文件名按序号区分 new_wb.save(f'billingTest_{col_num}.xlsx')
方案2:使用pandas实现(更适合新手)
pandas处理表格数据更简洁,无需手动操作单元格:
import pandas as pd # 读取原始Excel文件 df = pd.read_excel('billingTest.xlsx') # 提取第一列数据(不管列名是什么) first_col = df.iloc[:, 0] # 遍历除第一列外的所有列 for col_name in df.columns[1:]: # 拼接第一列和当前列 new_df = pd.concat([first_col, df[col_name]], axis=1) # 保存为新Excel,index=False避免生成行号 new_df.to_excel(f'billingTest_{col_name}.xlsx', index=False)
内容的提问来源于stack exchange,提问作者csywak
相关产品推荐
相关产品推荐

