python爬虫之excel解析详解

news/2024/7/19 11:54:19 标签: python, 开发语言, 爬虫, 信息可视化

        Excel是一种数据格式化和存储数据的工具,其表格形式非常适合存储和呈现数据,不少企业和业务都使用Excel来进行数据的存储与处理,因此对Excel解析的需求也越来越高。本文主要介绍Python中如何使用openpyxl解析Excel文件,通过一些实例的方法帮助大家掌握Excel解析的基本技巧。

一、openpyxl的安装

我们可以使用pip安装openpyxl库,安装方法如下:

python">pip install openpyxl

二、openpyxl的基本用法

我们打开一个Excel文件,例如一个名为example.xlsx的文件。要通过openpyxl读取数据,我们可以使用以下代码:

python">import openpyxl
wb = openpyxl.load_workbook('example.xlsx')

这段代码创建了一个名为wb的工作簿对象,通过load_workbook()函数我们可以打开Excel文件example.xlsx。现在我们可以使用以下命令获取工作簿中的所有工作表名称:

python">wb.sheetnames

接下来,我们可以通过以下命令获取工作表名称为Sheet1的工作表:

sheet = wb['Sheet1']

我们还可以使用以下命令获得工作表的最大行数和列数:

w, h = sheet.max_column, sheet.max_row

使用以下代码可以获取某个单元格的值:

cell_value = sheet.cell(row=1, column=1).value

三、Excel解析的实践应用

了解了如何使用openpyxl,我们通过几个实例来深入理解如何解析Excel文件。

1.实例1:读取Excel中的数据

在这个实例中,我们首先需要从example.xlsx中读取Sheet1内的所有记录。

python">import openpyxl

# 打开工作簿并读入数据
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']

# 循环读取数据
for row in sheet.iter_rows(min_row=2):
    # 按照行循环,并获取第一列和第二列的值
    name = row[0].value
    email = row[1].value    
    print(name, email)

2.实例2:为Excel添加数据

在这个实例中,我们将创建一个空的Excel文件,向其中添加一些数据。

python">import openpyxl

# 创建工作簿并创建工作表
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = 'Sheet1'

# 向工作表中添加数据
sheet['A1'] = 'Name'
sheet['B1'] = 'Email'
sheet['A2'] = '张三'
sheet['B2'] = 'zhangsan@test.com'
sheet['A3'] = '李四'
sheet['B3'] = 'lisi@test.com'

# 保存工作簿
wb.save('new_example.xlsx')

我们首先使用openpyxl创建一个工作簿,并命名为Sheet1。然后我们向Sheet1中添加一些数据,并且将工作簿保存为新的文件new_example.xlsx。

3.实例3:从Excel中过滤数据

在这个实例中,我们首先需要从example.xlsx文件中读取Sheet1内的所有记录,并找出其中email域为@test.com的所有记录。

python">import openpyxl

# 打开工作簿并读取数据
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']

# 过滤数据,查找Email列值为@test.com的记录
matched_rows = []
for row in sheet.iter_rows(min_row=2):
    if row[1].value.endswith('@test.com'):
        matched_rows.append(row)

# 输出结果
for row in matched_rows:
    name = row[0].value
    email = row[1].value
    print(name, email)

我们首先使用openpyxl读取Excel文件example.xlsx,并打开Sheet1工作表。然后我们循环读取所有记录,并找到Email列值为@test.com的所有记录。对于匹配的记录,我们将它们添加到matched_rows列表中,然后输出结果。

4.实例4:使用openpyxl生成图表

在这个实例中,我们将演示如何使用openpyxl生成图表。

python">import openpyxl
from openpyxl.chart import BarChart, Reference

# 打开工作簿并读取数据
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']

# 创建一个柱形图
chart = BarChart()
chart.type = "col"
chart.title = "Example Chart"
chart.y_axis.title = "Count"
chart.x_axis.title = "Name"

# 配置图表数据
data = Reference(sheet, min_row=2, min_col=2, max_row=6, max_col=3)
chart.add_data(data, titles_from_data=True)

# 将图表插入工作簿
sheet.add_chart(chart, "B10")

# 保存工作簿
wb.save('example_chart.xlsx')

我们首先使用openpyxl读取Excel文件example.xlsx,并打开Sheet1工作表。然后我们创建一个柱形图,设置图表的类型、标题和轴标签。接着我们查询数据区域,并将数据添加到图表中。最后,我们将图表插入到工作表中,并保存工作簿为example_chart.xlsx文件。

四、总结

这篇文章介绍了openpyxl库的安装和基本用法,并通过实例来帮助读者深入了解如何解析Excel文件。openpyxl库对于数据处理和数据分析非常实用,读者可以根据需要尝试使用openpyxl库来解析Excel文件并发掘更多数据。


http://www.niftyadmin.cn/n/353174.html

相关文章

二叉树的学习

最近在复习数据结构和线性代数,先准备周六的线代考试,好好复习。 目录 树的概念 结点: 空树: 子树: 结点的度: 树的度: 层数: 结点的深度: 结点的高度&#xff…

rust cargo工具常用插件列表

插件功能安装命令advisory检查 Cargo 依赖项中是否存在安全漏洞。cargo install cargo-advisoryasm生成 Rust 代码的汇编版本。cargo install cargo-asmaudit搜索 Rust 代码及其依赖项中的安全漏洞并输出警告。cargo install cargo-auditbenchcmp比较 Rust 基准测试结果。cargo…

Python 的全部关键字

关键字描述False布尔类型,表示假值(判断条件等)None表示一个空对象True布尔类型,表示真值(判断条件等)and逻辑运算符,表示逻辑与as别名,用于目录、模块的简化assert断言异常&#xf…

高维向量搜索:在 Elasticsearch 8.X 中利用 dense_vector 的实战探索

近年来,随着深度学习技术的发展,向量搜索引发了人们的广泛关注。早在 Elasticsearch在7.2.0 版本引入了dense_vector字段类型,支持存储高维向量数据,如词嵌入或文档嵌入,以进行相似度搜索等操作。在本文中,…

新手要学网络安全应该从哪学起?

写在开篇 本人10 年工作经验, 擅长 Web 安全攻防、渗透领域, 在金融领域的安全有丰富的实战经验。从事在线教育 3 年多培养学员过万,讲解清晰透彻,课程干货内容多,辅导学员耐心细致 我为啥说自学黑客&网络安全&a…

代码随想录算法训练营 Day 49 | 121.买卖股票的最佳时机,122.买卖股票的最佳时机 II

121.买卖股票的最佳时机 讲解链接:代码随想录-121.买卖股票的最佳时机 确定 dp 数组以及下标的含义: dp[i][0] 表示第 i 天持有股票所得最多现金dp[i][1] 表示第 i 天不持有股票所得最多现金 确定递推公式: 如果第 i 天持有股票即 dp[i][0]&…

一文掌握python数组numpy的全部用法(零基础学python(二))

NumPy 是一个 Python 中的数学和科学计算库,它提供了高效的多维数组对象和各种数组操作函数。NumPy 的核心是 ndarray(N-dimensional Array,N 维数组)对象,它是一种高效的数据容器,可以存储相同类型的多维数组。以下是 NumPy 的一些常见用法: 创建数组可以使用 NumPy 中…

上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

今年的校招基本已经进入大规模的开奖季了,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好…