Python自动化拆分Excel表格并提升处理速度在数据处理过程中,我们经常需要将大型Excel表格拆分为多个小的表格,以便于分析和共享。手动拆分表格费时费力,而使用Python可以轻松实现自动化拆分,提高工作效率。本文将介绍如何使用Python的openpyxl库来拆分Excel表格,并将每个工作表保存为单独的文件。此外,我们还将探讨一些优化技巧,以提升代码的运行速度。### 1. 安装必要的库首先,我们需要安装openpyxl库:bashpip install openpyxl### 2. 代码实现以下代码演示了如何使用openpyxl库拆分Excel表格:pythonimport openpyxlimport osfrom datetime import datetimefrom openpyxl import load_workbook# 打开Excel文件wb = load_workbook(r'C:/Users/Administrator/Desktop/工作簿1.xlsx')sheet = wb.worksheets[0] # 获取第一个工作表sheet.freeze_panes = 'A2' # 冻结A1窗格# 获取第二行所有单元格的内容row2_values = []for cell in sheet[2]: row2_values.append(cell.value)# 获取第一列所有单元格的内容col1_values = (cell.value for cell in sheet['A'])next(col1_values) # 跳过第一行# 拆分第一列单元格内容到新的工作表unique_values = set(col1_values)for value in unique_values: count = col1_values.count(value) new_sheet_name = f'{value} ({count} 人)' new_sheet = wb.create_sheet(title=new_sheet_name) # 在新工作表的第一行插入原工作表A1单元格的内容 new_sheet.insert_rows(1) for col_num, cell in enumerate(sheet[1], 1): new_sheet.cell(row=1, column=col_num, value=cell.value) # 添加第二行单元格内容到新工作表 new_sheet.append(row2_values) # 批量添加第一列单元格内容到新工作表 rows_to_copy = [(cell.value for cell in row) for row in sheet.iter_rows(min_row=2)] rows_to_copy = filter(lambda row: row[0] == value, rows_to_copy) new_sheet.append(list(rows_to_copy)) # 删除新工作表中的空行 rows_to_delete = [row for row in new_sheet.iter_rows() if all([cell.value is None for cell in row])] for row in rows_to_delete: new_sheet.delete_rows(row[0].row) # 合并第一行单元格并居中 num_cols = new_sheet.max_column new_sheet.merge_cells(start_row=1, start_column=1, end_row=1, end_column=num_cols) new_sheet.cell(row=1, column=1).alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')# 删除工作表名字为'表头 (1 人)'的工作表if '表头 (1 人)' in wb.sheetnames: wb.remove(wb['表头 (1 人)'])# 保存为新的excel文件wb.save(r'C:/Users/Administrator/Desktop/拆分表格结果.xlsx')# 获取所有工作表sheets = wb.sheetnames# 排除第一个工作表sheets = sheets[1:]# 创建拆分结果文件夹folder_name = '拆分结果'desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')folder_path = os.path.join(desktop_path, folder_name)if not os.path.exists(folder_path): os.mkdir(folder_path)# 遍历每个工作表for sheet_name in sheets: # 创建新的Excel文件 new_wb = openpyxl.Workbook() new_sheet = new_wb.active # 复制工作表内容到新的Excel文件 sheet = wb[sheet_name] for row in sheet.iter_rows(): for cell in row: new_sheet[cell.coordinate].value = cell.value # 保存新的Excel文件 date_str = datetime.now().strftime('%Y-%m-%d') file_name = f'{sheet_name}-{date_str}.xlsx' file_path = os.path.join(folder_path, file_name) new_wb.save(file_path) # 关闭新的Excel文件 new_wb.close()# 关闭原Excel文件wb.close()### 3. 优化技巧以下是一些优化代码以提高运行速度的技巧:- 使用生成器表达式代替列表推导式: 在获取第一列所有单元格的内容时,可以使用生成器表达式代替列表推导式,这样可以减少内存的使用,提高代码的运行速度。- 使用批量操作代替循环操作: 在拆分第一列单元格内容到新的工作表时,可以使用批量操作代替循环操作,这样可以减少代码的执行次数,提高代码的运行速度。- 使用多进程或多线程并发处理: 在遍历每个工作表时,可以使用多进程或多线程并发处理,这样可以利用多核CPU的优势,提高代码的运行速度。### 4. 总结本文介绍了如何使用Python的openpyxl库自动化拆分Excel表格,并将每个工作表保存为单独的文件。此外,我们还提供了一些优化技巧,以帮助您进一步提升代码的运行速度。希望本文能帮助您更高效地处理数据。

Python自动化拆分Excel表格并提升处理速度

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

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