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

yizhihongxing

下面是关于“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日

相关文章

  • opencv python 图像轮廓/检测轮廓/绘制轮廓的方法

    下面是详细的讲解“opencv python 图像轮廓/检测轮廓/绘制轮廓的方法”的完整攻略。 检测轮廓 检测图像轮廓的方法主要是通过cv2.findContours函数实现,该函数接收三个参数,分别是输入图像、轮廓检索方式以及轮廓近似方法。返回值是包含检测到的轮廓信息的列表。以下是检测轮廓的基本步骤: 读入一张图片并转化为灰度图。 import cv2 i…

    python 2023年5月18日
    00
  • Python中有哪些常用的数据类型?

    Python是一种动态语言,支持多种数据类型。以下是Python中常用的一些数据类型: 数字类型 数字类型包括整数、浮点数、复数等。其中,整数可以是正数、负数或0,浮点数是有小数点的数字,而复数由实数和虚数组合而成。 # 整数 a = 10 # 浮点数 b = 3.14 # 复数 c = 2 + 7j 字符串类型 字符串是由单引号、双引号、三引号表示的文本数…

    python 2023年4月19日
    00
  • Python实现12种降维算法的示例代码

    Python实现12种降维算法的示例代码 降维是一种常用的数据预处理技术,用于将高维数据转换为低维数据,以便于可视分析。在Python,有多种降维算法可供选择。本文将详细讲解Python实现12种降维算法的示例包括算法原理Python实现过程和示例说明。 算法原理 常用的降维算法包括主成分分析(PCA)、线性判别析(LDA)、t-SNE、等距映射(Isoma…

    python 2023年5月13日
    00
  • python函数定义和调用过程详解

    让我来详细讲解一下Python函数定义和调用过程的完整攻略。 函数的定义 在Python中,函数是一段可以被调用执行的代码块,函数可以接受传入的参数,也可以返回值。 函数的定义格式如下: def function_name(parameter1, parameter2, …): statement1 statement2 … return resul…

    python 2023年6月5日
    00
  • python的random和time模块详解

    Python的random和time模块详解 random模块 Python的random模块提供生成伪随机数的函数。以下是random模块中一些比较有用的函数: randint() randint(a, b)返回[a,b]区间内的一个随机整数。 import random print(random.randint(1, 6)) # 输出1~6中的一个整数(…

    python 2023年5月14日
    00
  • Selenium常见异常解析及解决方案示范

    Selenium常见异常解析及解决方案示范 1. 作用 Selenium是一个自动化测试工具,也可被用于Web服务的应用程序的功能测试。本文将详细讲解在使用Selenium时,遇到的常见的异常以及解决方案,希望能够帮助到大家。 2. 常见异常 2.1. NoSuchElementException 异常 问题描述: 在WebDriver执行元素的定位操作时,…

    python 2023年5月13日
    00
  • Python中函数的参数传递与可变长参数介绍

    Python中函数的参数传递与可变长参数是编写Python程序时经常用到的知识点,下面将详细讲解。 函数参数的传递方式 Python函数中有两种参数的传递方式,一种是值传递,另一种是引用传递。在函数调用时,如果传递的是可变类型的参数,函数内部对这些参数的操作将影响到原始参数的值。 值传递 Python中的值传递指的是将参数的值复制到函数栈中,这样在函数内部改…

    python 2023年5月14日
    00
  • python 提取html文本的方法

    Python提取HTML文本的方法 在本文中,我们将介绍如何使用Python提取HTML文本。我们将使用Python内置的re模块和BeautifulSoup库来提取HTML文本。 步骤1:使用re模块提取HTML文本 在使用Python提取HTML文本之前,我们需要先了解如何使用re模块提取HTML文本。以下是使用re模块提取HTML文本的步骤: 导入re…

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