Python拆分Excel表格:openpyxl库实现按列内容拆分
Python拆分Excel表格:使用openpyxl库按列内容拆分并保留格式
本文介绍如何使用Python的openpyxl库,将一个Excel表格按照指定列的内容拆分成多个独立的Excel文件。
功能:
- 读取Excel文件,获取第一个工作表。* 冻结第一个工作表窗格A1行的内容。* 从第二行开始,获取单元格名称为表头的单元格。* 遍历表格数据,将获取到的单元格所在列中所有相同内容的行,带原格式生成一个新的工作表。* 将原表格窗格A1的内容,带原格式写入到每一个新的工作表。* 新的工作表生成单独的Excel文件,并以获取到的列中的单元格内容命名。* 在桌面新建一个文件夹,并将所有新生成的Excel文件保存到该文件夹中。
**代码示例:**pythonimport osimport shutilfrom openpyxl import load_workbook, Workbookfrom openpyxl.utils import get_column_letter
设置工作目录和文件名work_dir = os.path.expanduser('~/Desktop')file_name = 'example.xlsx'file_path = os.path.join(work_dir, file_name)
加载Excel文件wb = load_workbook(file_path)
获取第一个工作表ws1 = wb.worksheets[0]
冻结窗格A1行ws1.freeze_panes = 'A2'
获取表头信息header = {}for col in ws1.iter_cols(min_row=2, max_row=2): for cell in col: header[cell.value] = get_column_letter(cell.column)
创建保存新工作表的文件夹new_dir = os.path.join(work_dir, 'new_sheets')if os.path.exists(new_dir): shutil.rmtree(new_dir)os.makedirs(new_dir)
遍历表格数据,拆分工作表for row in ws1.iter_rows(min_row=3): row_dict = {cell.column_letter: cell.value for cell in row} sheet_name = row_dict[header['Sheet Name']] sheet_file_name = os.path.join(new_dir, sheet_name + '.xlsx') if not os.path.exists(sheet_file_name): new_wb = Workbook() new_wb.remove(new_wb.active) new_wb.create_sheet(sheet_name) new_ws = new_wb[sheet_name] for cell in row: new_ws.cell(row=cell.row, column=cell.column, value=cell.value) new_ws.cell(row=cell.row, column=cell.column).style = cell.style for col in ws1.iter_cols(min_row=1, max_row=2): for cell in col: new_ws.cell(row=cell.row, column=cell.column, value=cell.value) new_ws.cell(row=cell.row, column=cell.column).style = cell.style new_wb.save(sheet_file_name) else: wb = load_workbook(sheet_file_name) new_ws = wb[sheet_name] new_row = new_ws.max_row + 1 for cell in row: new_ws.cell(row=new_row, column=cell.column, value=cell.value) new_ws.cell(row=new_row, column=cell.column).style = cell.style wb.save(sheet_file_name)
代码解释:
- 导入必要的库:
os,shutil,load_workbook,Workbook,get_column_letter。2. 设置工作目录、文件名和文件路径。3. 使用load_workbook函数加载Excel文件。4. 获取第一个工作表,并冻结窗格A1行。5. 获取表头信息,存储在一个字典中,键为表头名称,值为对应的列字母。6. 创建一个新的文件夹,用于保存拆分后的Excel文件。7. 遍历表格数据,根据指定列的内容创建新的工作表,并将数据复制到新工作表中。8. 将窗格A1的内容和格式复制到每个新工作表中。9. 保存新创建的Excel文件。
使用说明:
- 将示例代码保存为Python文件(例如split_excel.py)。2. 将需要拆分的Excel文件(example.xlsx)放到与Python文件相同的目录下。3. 运行Python脚本。
注意:
- 代码中假设需要按照名为'Sheet Name'的列进行拆分,请根据实际情况修改。* 脚本会在桌面创建一个名为'new_sheets'的文件夹,并将拆分后的文件保存在其中。
希望本文能够帮助你使用Python轻松拆分Excel表格!
原文地址: https://www.cveoy.top/t/topic/fW8K 著作权归作者所有。请勿转载和采集!