python利用openpyxl拆分多个工作表的工作簿的方法

下面是关于“python利用openpyxl拆分多个工作表的工作簿的方法”的详细讲解,包含了完整的实例教程和示例说明。

1. 前言

Excel表格是我们日常工作和生活中比较常用的一种数据处理方式,有时候我们需要对一个大表格进行拆分,这时候我们可以使用Python中的openpyxl库来实现这个功能。

2. openpyxl库

openpyxl是一个Python库,用于读写Excel 2010 xlsx /xlsm /xltx /xltm文件,它可以实现Excel的多种功能,如创建、修改和更新工作簿、工作表、图表等等。

可以在Python中使用如下命令安装openpyxl库:

pip install openpyxl

3. 拆分Excel表格

下面是一个实际的例子,我们以一个存储订单数据的Excel表格为例,来讲解如何拆分Excel表格。

Excel表格的原始数据如下:

订单号 商品名称 数量 价格
001 商品A 10 8.00
002 商品B 5 6.00
003 商品C 3 12.50
004 商品A 5 8.00
005 商品B 2 7.00

我们现在的任务是将上表中的数据按照分类拆分成多个工作表的工作簿,比如按照商品名称将订单数据进行分类,生成多个工作表。

3.1 准备工作

首先我们需要打开Excel表格文件并读取其中的数据,这可以使用openpyxl库来实现。以下是读取Excel表格中数据的示例代码:

import openpyxl

# 打开Excel文件
wb = openpyxl.load_workbook('file.xlsx')

# 打开Excel表格中的工作表
ws = wb['Sheet1']

# 读取Excel表格中的数据
for row in ws.iter_rows(min_row=2):
    order_id = row[0].value
    product_name = row[1].value
    quantity = row[2].value
    price = row[3].value
    print(order_id, product_name, quantity, price)

其中,我们通过openpyxl.load_workbook方法打开Excel文件,然后通过workbook对象的active属性或者wb['表格名称']方法获取表格中的工作表。此处我们获取了名为Sheet1的工作表,并通过Sheet对象的iter_rows()方法来遍历表格中每一行的数据。

3.2 拆分Excel表格

接下来,我们需要对Excel表格进行拆分操作。我们可以根据商品名称来拆分数据,以下是实现拆分操作的示例代码:

import os
import openpyxl

# 打开Excel文件
wb = openpyxl.load_workbook('file.xlsx')

# 打开Excel表格中的工作表
ws = wb['Sheet1']
data = {}

# 读取Excel表格中的数据
for row in ws.iter_rows(min_row=2):
    order_id = row[0].value
    product_name = row[1].value
    quantity = row[2].value
    price = row[3].value

    if product_name not in data.keys():
        data[product_name] = []

    data[product_name].append([order_id, product_name, quantity, price])

# 拆分Excel表格
for product_name, orders in data.items():
    wb1 = openpyxl.Workbook()
    ws1 = wb1.active
    ws1.append(['订单号', '商品名称', '数量', '价格'])

    for order in orders:
        ws1.append(order)

    wb1.save(f'{product_name}.xlsx')
    os.remove(f'{product_name}.xlsx')

这段代码的作用是将Excel表格按照商品名称进行拆分。首先,我们读取Excel表格中的每行数据,并按照商品名称对数据进行分类,将分类后的数据存储到字典data中。

接着,我们使用openpyxl.Workbook()方法创建一个新的工作簿,并在其中创建一个工作表,将分类后的数据写入到新的工作表中。最后使用save()方法,将新的工作簿保存到本地硬盘,os.remove()方法删除临时文件。

运行上述示例代码之后,会在当前目录下生成一个名为商品A.xlsx、商品B.xlsx、商品C.xlsx的工作簿,其中每个工作簿包含了按照商品名称拆分后的订单数据。

4. 示例说明

以下是两个关于拆分Excel表格的示例说明。

示例一

Excel表格中存储了一个学生的成绩信息,包括姓名、学号、班级、语文成绩、数学成绩、英语成绩等多个字段。请使用Python的openpyxl库将表格按照班级拆分成多个工作表,每个工作表只包含一个班级的学生信息。

解决方案:

  1. 打开Excel表格文件,并读取其中的数据;
  2. 根据班级对数据进行分类,将分类后的数据存储到字典data中;
  3. 使用openpyxl库创建新的工作簿和工作表,并将分类后的数据写入到新的工作表中;
  4. 将新的工作簿保存到本地硬盘,并删除临时文件。

示例代码如下:

import os
import openpyxl

# 打开Excel文件
wb = openpyxl.load_workbook('file.xlsx')

# 打开Excel表格中的工作表
ws = wb['Sheet1']
data = {}

# 读取Excel表格中的数据
for row in ws.iter_rows(min_row=2):
    name = row[0].value
    student_id = row[1].value
    class_name = row[2].value
    chinese_score = row[3].value
    math_score = row[4].value
    english_score = row[5].value

    if class_name not in data.keys():
        data[class_name] = []

    data[class_name].append([name, student_id, class_name, chinese_score, math_score, english_score])

# 拆分Excel表格
for class_name, students in data.items():
    wb1 = openpyxl.Workbook()
    ws1 = wb1.active
    ws1.append(['姓名', '学号', '班级', '语文成绩', '数学成绩', '英语成绩'])

    for student in students:
        ws1.append(student)

    wb1.save(f'{class_name}.xlsx')

print('拆分完成!')

示例二

Excel表格中存储了一些客户的订单信息,包括订单编号、客户姓名、订单时间、商品名称、商品数量、商品单价等。请使用Python的openpyxl库将表格按照订单时间拆分成多个工作表,每个工作表只包含一个月份的订单信息。

解决方案:

  1. 打开Excel表格文件,并读取其中的数据;
  2. 根据订单时间对数据进行分类,将分类后的数据存储到字典data中;
  3. 使用openpyxl库创建新的工作簿和工作表,并将分类后的数据写入到新的工作表中;
  4. 将新的工作簿保存到本地硬盘,并删除临时文件。

示例代码如下:

import os
import openpyxl
from datetime import datetime

# 打开Excel文件
wb = openpyxl.load_workbook('file.xlsx')

# 打开Excel表格中的工作表
ws = wb['Sheet1']
data = {}

# 读取Excel表格中的数据
for row in ws.iter_rows(min_row=2):
    order_id = row[0].value
    customer_name = row[1].value
    order_time = row[2].value
    product_name = row[3].value
    quantity = row[4].value
    price = row[5].value

    year = order_time.year
    month = order_time.month

    if year not in data.keys():
        data[year] = {}

    if month not in data[year].keys():
        data[year][month] = []

    data[year][month].append([order_id, customer_name, order_time, product_name, quantity, price])

# 拆分Excel表格
for year, months in data.items():
    for month, orders in months.items():
        wb1 = openpyxl.Workbook()
        ws1 = wb1.active
        ws1.append(['订单编号', '客户姓名', '订单时间', '商品名称', '商品数量', '商品单价'])

        for order in orders:
            ws1.append(order)

        month_str = datetime.strftime(datetime(year, month, 1), '%Y%m')
        wb1.save(f'{month_str}订单.xlsx')
        os.remove(f'{month_str}订单.xlsx')

print('拆分完成!')

5. 总结

本文通过实际案例,结合openpyxl库的使用,对Python如何拆分Excel表格进行了详细的讲解。同时,我们还提供了两个示例,希望对读者有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python利用openpyxl拆分多个工作表的工作簿的方法 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python读取Word(.docx)正文信息的方法

    本攻略将介绍如何使用Python读取Word(.docx)正文信息。我们将使用Python的python-docx库读取Word文档,并使用正则表达式处理文本数据。 安装python-docx库 我们可以使用pip命令安装python-docx库。以下是一个示例代码,用于安装python-docx库: pip install python-docx 在上面的…

    python 2023年5月15日
    00
  • python json-rpc 规范源码阅读

    Python JSON-RPC规范源码阅读攻略 什么是JSON-RPC JSON-RPC是一种轻量级的远程过程调用(RPC)协议,它使用JSON(JavaScript Object Notation)作为数据格式。JSON-RPC协议允许客户端通过网络调用远程服务器上的函数或方法,并获取返回值。JSON-RPC协议的优点是简单、轻量级、易于使用和实现。 JS…

    python 2023年5月15日
    00
  • python实现合并两个数组的方法

    关于“python实现合并两个数组的方法”的完整攻略如下: 标题:Python 实现合并两个数组的方法 方法一:使用”+”号 可以直接使用”+”号将两个数组连接在一起,并赋值给一个新的变量,代码如下: list1 = [1, 2, 3] list2 = [4, 5, 6] new_list = list1 + list2 print(new_list) # …

    python 2023年6月5日
    00
  • python实现红包裂变算法

    下面是详细讲解“Python实现红包裂变算法”的完整攻略,包括算法原理、Python实现和两个示例。 算法原理 红包裂变算法是一种常用的社交网络应用场景,其主要思想是将一定数量的红包金额分配给多个用户,使得每个用户获得的金额随机且公平。红包裂变算法的实现过程如下: 首先确定红包总金额和红包个数。 然后随机生成每个红包的金额,保证每个红包金额的总和等于红包总金…

    python 2023年5月14日
    00
  • python数据结构之搜索讲解

    Python数据结构之搜索讲解 搜索的定义 搜索是在数据集合中查找特定目标的过程。在计算机科学中,最常见的搜索是在数据结构中查找某个特定值的过程。常见的搜索算法包括线性搜索、二分搜索、深度优先搜索和广度优先搜索等。下面我们将详细讲解这些搜索算法的具体实现。 线性搜索 线性搜索是最基本的搜索算法,在一个数据集合中按顺序逐个查找目标值。可以通过以下 Python…

    python 2023年5月14日
    00
  • 进行数据处理的6个 Python 代码块分享

    我来为你详细讲解“进行数据处理的6个 Python 代码块分享”的完整攻略。 1. 去重复 去重复通常用于数据清洗中。在 Python 中,可以用 set() 函数实现去重复的功能,具体操作如下: # 定义一个有重复元素的列表 my_list = [1, 2, 3, 2, 4, 5, 3, 1] # 使用 set() 函数去重 my_set = set(my…

    python 2023年5月19日
    00
  • Python 在字符串中加入变量的实例讲解

    Python 在字符串中加入变量的实例讲解可以通过字符串格式化来实现。字符串格式化常用的有三种方式:使用百分号(%)、使用字符串的format()方法和使用f-string。 使用百分号 使用百分号(%)进行字符串格式化最为常见。在字符串中需要添加变量的位置,使用%s占位符来代表后面会传入的参数。例如: name = ‘张三’ age = 18 print(…

    python 2023年6月5日
    00
  • Python中字典和JSON互转操作实例

    当我们在Python中使用字典操作时,很有可能需要将字典转换为JSON格式,或者将JSON数据转换为Python中的字典。Python中提供了两个标准库,分别是json和pickle,其中json库可以实现字典和JSON互转的操作。下面,我们将对字典和JSON互转的实例进行分析说明。 1. 字典转JSON 将Python中的字典转换为JSON格式 在Pyth…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部