当前位置: 首页 > news >正文

Python从入门到网络爬虫(读写Excel详解)

前言

Python操作Excel的模块有很多,并且各有优劣,不同模块支持的操作和文件类型也有不同。最常用的Excel处理库有xlrd、xlwt、xlutils、xlwings、openpyxl、pandas,下面是各个模块的支持情况:

工具名称.xls.xlsx获取文件内容写入数据修改文件内容保存样式调整插入图片
xlrd×××××
xlwt×××
xlutils××××
xlwings
openpyxl×
pandas×××

对比会发现,其中xlwings的功能是最全最强大的,其实它的执行效率也是最高的。但是xlwings的学习难度相对比较大,而且里面的很多的概念和操作方式和平时操作Excel的时候不一样。openpyxl 的问题是不能操作老版本的excel文件(.xls),以及在操作数据的时候必须以单元格为单位操作,无法直接以行或者列的方式操作文件内容。xlrdxlwtxlutils三个模块配合使用可以很方便的对excel文件进行读、写和修改操作,也可以更方便的以行列的方式操作Excel文件,但是缺点是无法对.xlsx文件进行写和修改操作。在解决实际问题的时候读者可以根据自己的实际需求选择使用合适的工具。

下面主要介绍xlrdxlwt模块如何实现对.xls和.xlsx文件进行读写操作。

1. Excel文件中的工作簿、工作表

在使用工具库操作Excel之前,我们先来了解一下Excel中工作簿、工作表的感念。

1.1 工作簿

工作簿:excel工作簿就是excel电子表格文件。excel是以工作薄来存储数据的,工作簿文件是excel存储在磁盘上的最小独立文件,它由多个工作表组成,在excel中数据和图表都是以工作表的形式存储在工作簿文件中的。简单的来说一个Excel文件(.xls、.xlsx)就是一个工作簿。

1.2 工作表

工作表:工作表是显示在工作簿窗口中的表格,一个工作表可以由1048576行和256列构成,行的编号从1到1048576,列的编号依次用字母A、B ……IV表示,行号显示在工作簿窗口的左边,列号显示在工作簿窗口的上边。

Excel默认一个工作簿有三个工作表,用户可以根据需要添加工作表,但每一个工作簿中的工作表个数受可用内存的限制,当前的主流配置已经能轻松建立超过255个工作表了。

2. 使用xlrd读取Excel文件数据

2.1 安装xlrd

pip install xlrd

2.2 打开工作簿

# 引入xlrd
import xlrd# 打开Excel文件
workbook = xlrd.open_workbook("E:\\studyproject\\python\\Excel数据读取\\费县摸排数据\\林种.xls")

2.3 获取与打开工作表

一个工作簿中通常有多个工作表,我们可以使用sheet_names()方法获取所有工作表

# 获取打开工作簿中的所有工作表名 返回工作表名称列表
sheet_names = workbook.sheet_names()# 数据结果
# ['Sheet1','Sheet2','Sheet3']

上一步中我们获取到了,我们可以通过工作表名称或者工作表的排序索引打开工作表

# 通过工作表名称打开工作表
worksheet = workbook.sheet_by_name('Sheet1')# 通过工作表排序的索引打开工作表
worksheet = workbook.sheet_by_index(0)

也可以通过sheets()方法来获取全部工作表

# #获取所有的sheet对象
sheets = workbook.sheets()
for sheet in sheets:print(sheet.name)#结果: 1班 2班

2.4 读取单元格数据

获取到工作表之后,我们可以通过rows和cols两个属性来获取工作表的行数和列数

# 工作表行数
rows = worksheet.nrows# 工作表列数
cols = worksheet.ncols

通过行号和列表获取指定单元格中的数据

worksheet.cell_value(row, col)

获取指定行的某几列

worksheet.row_values(row,start_col,end_col)

获取指定列的某几行

worksheet.col_values(col,start_row,end_row)

2.5 应用实例

将Excel数据处理转换为json数据,是日常工作中最常见的一项实例,下面的实例我们就使用xlrd将读取Excel文件,转换获取json数据

import xlrd
import jsonworkbook = xlrd.open_workbook("E:\\studyproject\\python\\Excel数据读取\\摸排数据\\水源地.xls")worksheet = workbook.sheet_by_name('Sheet1')# 获取所有行数和列数
rows = worksheet.nrows
cols = worksheet.ncolsarr = []
for row in range(rows):obj = {}for col in range(cols):obj[worksheet.cell_value(0, col)] = worksheet.cell_value(row, col)arr.append(obj)print(arr)josnstr = json.dump(arr)# # print(josnstr)

3. 使用xlrw实现Excel写入数据

3.1 安装xlrw

pip install xlwt

3.2 创建工作簿

# 导入工具包
import xlwt# 创建一个工作簿
workbook = xlwt.Workbook(encoding="utf-8")

3.3 创建工作表

# 创建一个工作表
worksheet = workbook.add_sheet('小马过河')

3.4 往单元格里写入数据 

通过行号和列号往Excel表格中写入内容

# 参数对应 行, 列, 值
worksheet.write(1,0, label = 'hello world!')

最后保存生成(.xls)格式的Excel文件

# 保存
workbook.save('学习笔记.xls')

 

3.5 实际应用实例

将从数据库中读取的数据写入到Excel文件中

import pymysql
import xlwt# 创建数据库链接对象
database = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="toutiao",port=3306,charset="utf8"
)# 创建游标对象
cursor = database.cursor()# 游标对象使用execute()方法执行SQL语句
try:workbook = xlwt.Workbook(encoding="utf-8")worksheet = workbook.add_sheet("热门文章")# 执行查询语句cursor.execute("select title,publish_time,like_count,read_count,comment_count from happy limit 1,10")# 获取查询结果result = cursor.fetchall()for i in range(0,len(result)):for j in range(0,len(result[i])):worksheet.write(i,j,label=result[i][j])except Exception as e:print(e)
finally:# 关闭游标cursor.close()# 关闭数据库database.close()workbook.save("热门文章.xls")

相关文章:

Python从入门到网络爬虫(读写Excel详解)

前言 Python操作Excel的模块有很多,并且各有优劣,不同模块支持的操作和文件类型也有不同。最常用的Excel处理库有xlrd、xlwt、xlutils、xlwings、openpyxl、pandas,下面是各个模块的支持情况: 工具名称.xls.xlsx获取文件内容写入…...

Mysql之子查询、连接查询(内外)以及分页查询

目录 一.案例(接上篇博客) 09)查询学过「张三」老师授课的同学的信息 10)查询没有学全所有课程的同学的信息 11)查询没学过"张三"老师讲授的任一门课程的学生姓名 12)查询两门及其以上不及格课程…...

计算机的存储单位

在计算机中,只能识别二进制。 byte是1个字节,是8个比特位,所以byte可以存储的最大值是:01111111,byte是 [-128 ~ 127] 共可以标识256个不同的数字。 1字节 8bit(8比特)--> 1byte 8bit 类…...

设备树文件中的设备节点

一. 简介 前面几篇文章学习了 关于设备树文件的编译,设备树文件的调用。 本文开始学习 设备树文件的语法。具体学习设备节点与标准属性。 二. 设备树文件之设备节点与标准属性 1. 设备节点 设备树 是采用树形结构来描述板子上的设备信息的文件,每…...

文件管理工具.netcore资源文件管理

文件管理工具 怎么快速有效的管理我的文件包括文件夹,需求功能是 模糊搜索显示匹配的文件夹或文件数据 快速打开文件夹位置 在windows直接查看搜索速度太慢,范围宽泛,整理所需资源文件名和文件本机路径保存在数据库,可以在数据库中…...

go-carbon v2.3.4 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...

vue3 内置组件

文章目录 前言一、过渡效果相关的组件1、Transition2、TransitionGroup 二、状态缓存组件(KeepAlive)三、传送组件(Teleport )四、异步依赖处理组件(Suspense) 前言 在vue3中 其提供了5个内置组件 Transiti…...

MFC如何动态创建button按钮并添加点击事件

在MFC中,可以使用CButton类来动态创建按钮。下面是一个示例代码,演示了如何动态创建按钮并添加点击事件: 在对话框类的头文件中声明按钮变量: CButton m_btnDynamic;在对话框的OnInitDialog()函数中使用Create()函数创建按钮&am…...

Qt - QML框架

文章目录 1 . 前言2 . 框架生成3 . 框架解析3.1 qml.pro解析3.2 main.cpp解析3.3 main.qml解析 4 . 总结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 什么是QML? QML是一种用户界面规范和编程语言。它允许开发人员…...

Python+Flask+MySQL的图书馆管理系统【附源码,运行简单】

PythonFlaskMySQL的图书馆管理系统【附源码,运行简单】 总览 1、《的图书馆管理系统》1.1 方案设计说明书设计目标需求分析工具列表 2、详细设计2.1 登录2.2 注册2.3 程序主页面2.4 图书新增界面2.5 图书信息修改界面2.6 普通用户界面2.7 其他功能贴图 3、下载 总览…...

Module-Federation[微前端]

Module-Federation 微前端简介我们为什么没有延续使用【乾坤】使用Module-Federation 优/缺EMP 优EMP 缺图解DEMO详解`Tips:` [文件资源](https://download.csdn.net/download/alnorthword/88699315)微前端简介 微前端是借鉴了微服务的理念,将一个庞大的应用拆分成多个独立灵活…...

Spring 动态数据源事务处理

在一般的 Spring 应用中,如果底层数据库访问采用的是 MyBatis,那么在大多数情况下,只使用一个单独的数据源,Spring 的事务管理在大多数情况下都是有效的。然而,在一些复杂的业务场景下,如需要在某一时刻访问不同的数据库,由于 Spring 对于事务管理实现的方式,可能不能达…...

WSL2-Ubuntu22.04子系统图形化界面搭建与远程桌面连接

提示:文中不提供WSL2子系统搭建步骤,假定子系统已建立好: 文章目录 检查WSL子系统状态图形化界面安装远程桌面连接可能遇到的相关问题xrdp状态异常远程桌面黑屏 检查WSL子系统状态 wsl -l -v如下图所示为正常 图形化界面安装 以此执行如下…...

【sklearn练习】model常用属性和功能

介绍 scikit-learn 中的机器学习模型(estimator)通常具有一组常用属性和功能,这些属性和功能可以用于训练、评估和使用模型。以下是一些常见的模型属性和功能: 常见属性: coef_:对于线性模型(…...

IO类day01

File类 File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径) 使用File可以做到: 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等 2:创建和删除文件或目录 3:访问一个目录中的子项 但是File不能访问文件数据. pu…...

软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告

xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》(A)试题(开卷) 题目:以某一 web 系统为测试对象,完成以下文档的编写: (满分 100 分) (1&am…...

适用于任何公司的网络安全架构

1.第一等级:基础级 优势 可防范基本有针对性的攻击,使攻击者难以在网络上推进。将生产环境与企业环境进行基本隔离。 劣势 默认的企业网络应被视为潜在受损。普通员工的工作站以及管理员的工作站可能受到潜在威胁,因为它们在生产网络中具有基本和管理…...

Excel:通过excel将表数据批量转换成SQL语句

这里有一张表《student》,里面有10条测试数据,现在将这10条测试数据自动生成 insert语句,去数据库 批量执行 P.S. 主要用到excel表格中的 CONCATENATE函数,将单元格里面的内容填入到sql里面对应的位置 1. 先写好一条insert语句&a…...

Android linphone-android sdk设置语音编码问题

1.遇到的问题 今天遇到linphone-android sdk需要解决语音编码问题,需要指定编码。查了下配置,里面没有发现类似的配置。 ## Start of factory rc # This file shall not contain path referencing package name, in order to be portable when app is r…...

Hyperledger Fabric Orderer 配置解析

文中使用的 fabric 版本为 2.4.1 排序节点在 Fabric 网络中为 Peer 提供排序服务。与 Peer 节点类似,排序节点支持从命令行参数、环境变量或配置文件中读取配置信息。环境变量中配置需要以 ORDERER_前缀开头,例如,配置文件中的 general.Liste…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...