数据处理以及可视化 openpyxl

本文介绍了如何使用openpyxl库在Python中进行Excel文件的读取、写入,包括数据处理和创建图表,如柱状图的实例。详细讲解了如何操作工作簿、工作表和单元格,以及数据的导入和导出。
摘要由CSDN通过智能技术生成

环境准备

在开始之前,请确保已经安装了所需的包。你可以使用pip命令安装:

pip install openpyxl -i 国内源地址

openpyxl 简介

openpyxl 是一个 Python 库,用于读取和写入 Excel xlsx/xlsm/xltx/xltm 文件。它可以让你以编程方式控制 Excel 文。它支持对表格的读写操作,以及完整的 Excel 文件和单元格格式设置,如字体、填充、颜色等。

读取Excel(一)

首先,我们来学习如何用 openpyxl 读取 Excel 文件中的数据。

import openpyxl


# 加载工作簿
workbook = openpyxl.load_workbook('case.xlsx')

# 选择工作表,访问指定名称的工作表
sheet = workbook['Sheet1']

# 读取某个单元格数据
cell = sheet['A1']
print(cell.value)

# 读取多个单元格数据, 读取A1:C2的数据
for row in sheet['A1:C2']:
    for cell in row:
        print(cell.value)

# 关闭工作簿
workbook.close()

读取Excel(二)

这里假设我们有一个名为case.xlsx的Excel文件,它有三列数据:姓名、年龄和城市。

from openpyxl import load_workbook


def read_excel(file_path):
    # 使用Openpyxl库加载一个Excel文件的方法。它接受一个文件路径作为参数,然后根据路径加载相应的Excel文件,并将其赋值给变量workbook。
    # 在加载过程中,会检查文件是否存在、是否为Excel文件以及是否有密码保护。
    # 如果Excel文件有密码保护,需要在路径后添加 / 和密码,
    #   例如C:/Users/username/Documents/example.xlsx/password
    workbook = load_workbook(file_path) # 函数打开Excel文件,并获取其工作簿对象
	
    # 获取文件中的所有工作表名称
    sheet = workbook.sheetnames  
    print(sheet)

    # 循环遍历工作簿中的所有工作表名称
    for sheet_name in workbook.sheetnames:
        # 访问工作簿中指定的某个sheet
        sheet = workbook[sheet_name]
        # 遍历工作表中的所有行,并将每行的值作为元组打印出来。这里的values_only=True参数表示只打印值,而不是打印单元格对象。
        for row in sheet.iter_rows(values_only=True):
            print(f"{sheet_name}: {row}")

    # 关闭Excel文件
    workbook.close()


read_excel('case.xlsx')

数据处理和写入Excel

如果你想将读取到的数据写入到同一Excel文件中的一个新的工作表(例如 Sheet2),你可以按照以下步骤来执行:

  1. 读取 Sheet1 的数据。
  2. 创建一个新的工作表 Sheet2
  3. 将读取到的数据写入到 Sheet2 中。
  4. 保存更改。
import openpyxl

# 加载工作簿
workbook = openpyxl.load_workbook('case.xlsx')

# 选择工作表Sheet1
sheet1 = workbook['Sheet1']

# 为了存储读取的数据,创建一个空的列表
data = []

# 读取Sheet1的A1:C2范围内的数据
for row in sheet1['A1:C2']:
    # 为了存储行数据,创建一个空的列表
    row_data = []
    for cell in row:
        # 打印读取的值并将其存储在行列表中
        print(cell.value)
        row_data.append(cell.value)
    # 将行数据追加到数据列表中
    data.append(row_data)

# 检查是否存在名为Sheet2的工作表,如果不存在,则创建
if 'Sheet2' not in workbook.sheetnames:
    workbook.create_sheet('Sheet2')

# 选取Sheet2工作表
sheet2 = workbook['Sheet2']

# 将从Sheet1读取的数据写入Sheet2
for row in data:
    sheet2.append(row)  # 将读取的每一行数据追加到Sheet2中

# 保存工作簿
workbook.save('case.xlsx')

# 关闭工作簿
workbook.close()

数据可视化

openpyxl 也支持图表的创建。以下是一个创建柱状图的例子:

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# 创建工作簿和工作表
wb = Workbook()
ws = wb.active

# 添加数据
data = [
    ('Number', 'Batch 1', 'Batch 2'),
    (2, 40, 30),
    (3, 40, 25),
    (4, 50, 30),
    (5, 30, 10),
    (6, 25, 5),
    (7, 50, 10),
]

for row in data:
    ws.append(row)


"""
    ColumnChart:柱状图
    LineChart:折线图
    PieChart:饼图
    ScatterChart:散点图
    BarChart:柱状图
"""

# BarChart对象,用于表示图表 柱状图
chart = BarChart()

# data是一个引用(Reference),用于指向工作表(ws)中一组单元格的数据。
# 这些单元格位于第2列(min_col=2)的第1行(min_row=1)到第7行(max_row=7)以及第3列(max_col=3)。
data = Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)

# cats是一个引用(Reference),用于指向工作表(ws)中一组单元格的分类。
# 这些单元格位于第1列(min_col=1)的第2行(min_row=2)到第7行(max_row=7)。
cats = Reference(ws, min_col=1, min_row=2, max_row=7)

# data是待添加的数据,titles_from_data=True表示从数据中获取标题。在图表中,每条数据都有一个标题,用于在图表中显示数据。
# 通过设置titles_from_data=True,可以自动从数据中生成标题。
chart.add_data(data, titles_from_data=True)

# cats是横坐标的值,即数据中的每个类别。通过调用chart.set_categories(cats),
# 可以将cats设置为横坐标,这样在图表中就可以看到数据的类别分布
chart.set_categories(cats)

# 将图表对象添加到工作表对象中。当工作表中的数据发生变化时,图表会自动更新。
ws.add_chart(chart, "E2")

# 保存工作簿
wb.save("chart.xlsx")
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油头Y7

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值