文章目录
需求:现在有一个excel文件,名字叫testbi,整个文件的sheet1中有列table_name、column_name,其中整个table_name下存储的是表名,现在需要根据不同的表名创建不同的sheet页,然后将table_name、column_name放在不同的sheet页中
import pandas as pd
def split_excel_by_table(input_file, sheet_name='Sheet1'):
# 读取原始Excel文件
df = pd.read_excel(input_file, sheet_name=sheet_name)
# 获取所有唯一的表名
table_names = df['TABLE_NAME'].unique()
# 创建一个Excel writer对象,用于写入多个sheet
output_file = input_file.replace('.xlsx', '_split.xlsx')
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
# 为每个表创建一个新的sheet
for table in table_names:
# 筛选出当前表的数据
table_data = df[df['TABLE_NAME'] == table]
# 写入到新的sheet中,sheet名称为表名
# 如果表名太长,截取前31个字符(Excel sheet名称长度限制)
sheet_name = str(table)[:31]
table_data.to_excel(writer, sheet_name=sheet_name, index=False)
print(f"处理完成,结果已保存到: {output_file}")
# 使用示例
input_file = 'C:/Users/Administrator/Desktop/testBi.xlsx' # 替换为你的Excel文件路径
split_excel_by_table(input_file)