Python3.8 Openpyxl库拆分Excel表格教程
利用Python3.8 Openpyxl库拆分Excel表格
本文将介绍如何使用Python3.8的openpyxl库拆分Excel表格。您将学习如何根据指定列的内容将一个Excel表格拆分为多个表格,每个表格包含原始表格中该列具有相同值的所有行。此外,代码还将保留原始表格的格式,并将每个新表格保存为独立的Excel文件。
代码示例
以下是使用Python3.8版本openpyxl库拆分表格的代码:
import os
from openpyxl import Workbook, load_workbook
from openpyxl.utils import get_column_letter
from openpyxl.styles import NamedStyle
# 设置工作表冻结窗格A1行的内容的样式
def set_freeze_panes(ws):
ws.freeze_panes = ws['A2']
ws.freeze_panes = ws.freeze_panes.freeze_panes
# 获取单元格名称为表头的单元格所在列的列号
def get_header_col(ws, header):
for col in range(1, ws.max_column + 1):
if ws.cell(row=1, column=col).value == header:
return col
return None
# 拆分表格并生成新的工作表
def split_workbook(filename, header):
# 加载原始工作表
wb = load_workbook(filename)
ws = wb.active
# 设置工作表冻结窗格A1行的内容的样式
set_freeze_panes(ws)
# 获取单元格名称为表头的单元格所在列的列号
col = get_header_col(ws, header)
if col is None:
return
# 创建新的工作表
style = NamedStyle(name='original')
for row in range(2, ws.max_row + 1):
cell_value = ws.cell(row=row, column=col).value
if cell_value is None:
continue
if cell_value not in wb.sheetnames:
wb.create_sheet(cell_value)
wb[cell_value].append(ws[1])
wb[cell_value].row_dimensions[1] = ws.row_dimensions[1]
for c in range(1, ws.max_column + 1):
wb[cell_value].cell(row=1, column=c).style = style
wb[cell_value].append(ws[row])
wb[cell_value].row_dimensions[row] = ws.row_dimensions[row]
for c in range(1, ws.max_column + 1):
wb[cell_value].cell(row=row, column=c).style = style
# 保存拆分后的工作表到新的excel文件中
folder_path = os.path.join(os.path.expanduser('~'), 'Desktop', 'Split_Workbook')
if not os.path.exists(folder_path):
os.mkdir(folder_path)
for sheetname in wb.sheetnames:
if sheetname == ws.title:
continue
new_filename = os.path.join(folder_path, sheetname + '.xlsx')
new_wb = Workbook()
new_ws = new_wb.active
new_ws.title = sheetname
for row in wb[sheetname].rows:
new_ws.append(row)
set_freeze_panes(new_ws)
new_wb.save(new_filename)
# 测试
if __name__ == '__main__':
filename = 'example.xlsx'
header = 'Category'
split_workbook(filename, header)
代码说明
- 导入必要的库: 首先,我们需要导入
os,Workbook,load_workbook,get_column_letter,NamedStyle等库。 - 定义
set_freeze_panes函数: 该函数用于设置工作表冻结窗格,冻结A1单元格,方便查看数据。 - 定义
get_header_col函数: 该函数用于获取指定表头所在的列号。 - 定义
split_workbook函数: 这是核心函数,负责拆分表格。- 首先,加载原始Excel文件和工作表。
- 设置冻结窗格。
- 获取指定表头所在的列号。
- 遍历数据行,根据指定列的值创建新的工作表,并将对应数据复制到新工作表中。
- 保留原始格式。
- 将每个新工作表保存为独立的Excel文件到指定文件夹。
- 测试代码: 设置要拆分的Excel文件名和表头,调用
split_workbook函数执行拆分操作。
总结
通过以上代码,您可以轻松地使用Python3.8和openpyxl库拆分Excel表格。根据您的实际需求,修改文件名、表头等参数即可。
原文地址: https://www.cveoy.top/t/topic/fW8C 著作权归作者所有。请勿转载和采集!