Python代码实现Excel表格拆分,按列内容分组并保留格式/n/n本文介绍如何使用Python的openpyxl库,将一个Excel表格按照指定列的内容进行拆分,并将相同内容的行数据放到一个新的工作表中,同时保留原始表格的格式,包括单元格样式、列宽、冻结窗格和页面设置。/n/npython/nimport os/nimport openpyxl/nfrom openpyxl.utils import get_column_letter/nfrom openpyxl.styles import PatternFill, Border, Side, Alignment, Protection/nfrom openpyxl.worksheet.page import PageMargins/n/n# 设置工作表列宽/ndef set_column_width(ws):/n for column in ws.columns:/n max_length = 0/n column = list(column)/n for cell in column:/n try:/n if len(str(cell.value)) > max_length:/n max_length = len(str(cell.value))/n except:/n pass/n adjusted_width = (max_length + 2) * 1.2/n ws.column_dimensions[get_column_letter(column[0].column)].width = adjusted_width/n/n# 设置工作表样式/ndef set_cell_style(cell):/n # 设置填充颜色/n fill = PatternFill('solid', fgColor='FFFF00')/n cell.fill = fill/n # 设置边框/n border = Border(left=Side(border_style='thin', color='000000'),/n right=Side(border_style='thin', color='000000'),/n top=Side(border_style='thin', color='000000'),/n bottom=Side(border_style='thin', color='000000'))/n cell.border = border/n # 设置对齐方式/n cell.alignment = Alignment(horizontal='center', vertical='center')/n # 设置保护方式/n cell.protection = Protection(locked=True)/n/n# 获取表格数据/ndef get_table_data(file_path):/n wb = openpyxl.load_workbook(file_path)/n ws = wb.active/n # 冻结窗格/n ws.freeze_panes = 'A2'/n # 获取表头列/n header = {}/n for cell in ws[1]:/n header[cell.value] = cell.column_letter/n # 按表头列生成新的工作表/n for key in header:/n new_wb = openpyxl.Workbook()/n new_ws = new_wb.active/n new_ws.title = key/n # 写入窗格A1的内容/n new_ws['A1'].value = ws['A1'].value/n set_cell_style(new_ws['A1'])/n # 获取相同内容的行/n for row in ws.iter_rows(min_row=2):/n if row[header[key]-1].value:/n if not os.path.exists('output'):/n os.mkdir('output')/n if not os.path.exists('output/'+key):/n os.mkdir('output/'+key)/n new_file_path = 'output/'+key+'/'+row[header[key]-1].value+'.xlsx'/n if os.path.exists(new_file_path):/n new_wb = openpyxl.load_workbook(new_file_path)/n new_ws = new_wb.active/n else:/n new_ws = new_wb.create_sheet(title=row[header[key]-1].value)/n set_column_width(new_ws)/n new_ws.sheet_properties.pageSetUpPr.fitToPage = True/n new_ws.page_margins = PageMargins(left=0.5, right=0.5, top=0.5, bottom=0.5, header=0.5, footer=0.5)/n # 写入窗格A1的内容/n new_ws['A1'].value = ws['A1'].value/n set_cell_style(new_ws['A1'])/n # 写入行数据/n for i in range(len(row)):/n new_ws.cell(row=new_ws.max_row+1, column=i+1, value=row[i].value)/n set_column_width(new_ws)/n # 保存新的工作表/n new_wb.save(new_file_path)/n/nif __name__ == '__main__':/n get_table_data('data.xlsx')/n/n/n这段代码会读取名为 'data.xlsx' 的Excel文件,并根据第一个工作表中第一行的内容作为表头,将表格数据按列拆分到不同的工作表中。例如,如果第一行包含 '姓名'、'年龄'、'城市' 三列,则代码会创建三个新的工作表,分别名为 '姓名'、'年龄' 和 '城市',并将原始表格中对应列的数据复制到新的工作表中。/n/n代码功能:/n/n* 保留原始格式: 包括单元格样式、列宽、冻结窗格和页面设置。/n* 自动创建文件夹: 如果目标文件夹不存在,则自动创建。/n* 文件命名灵活: 新建的工作簿文件名可以使用表头列的内容进行命名。/n/n使用方法:/n/n1. 将代码保存为Python文件(例如split/_excel.py)。/n2. 将需要拆分的Excel文件(例如data.xlsx)与Python文件放在同一目录下。/n3. 在命令行中运行 python split_excel.py。/n/n代码执行完成后,会在当前目录下创建一个名为 'output' 的文件夹,拆分后的Excel文件将保存在该文件夹中。/n

Python Excel表格拆分:按列内容分组并保留格式

原文地址: https://www.cveoy.top/t/topic/fW7B 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录