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

Python操作Excel

Python中对Excel文件的操作包括:读、写、修改。如果要对其进行如上的操作需要导入Python的第三方模块:xlrd、xlwd、xlutils,其分别对应Python的读、写、修改的操作

一、安装Python的第三方模块

二、操作Excel的基本步骤

1、导入响对应的模块

2、通过xlwt.Workbook(),创建一个Excel文件

3、创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格

4、向文件中写入/读取内容

5、通过save()保存文件

三、对Excel的写、读、修改操作

1、对Excel的写操作

import xlwt #导入操作Excel的写模块#基本的写入操作

book = xlwt.Workbook() #创建一个Excel表格

sheet = book.add_sheet(‘test_sheet1’) #给Excel表中添加一个sheet页

sheet.write(0,0,‘id’) #向sheet表中写入数据,第一个参数代表的行数,第二个参数代表的列数,第三个参数代表写入的内容

sheet.write(0,1,‘name’)

sheet.write(1,0,1)

sheet.write(1,1,‘xiaohei’)

book.save(‘test.xls’) #报存文件,结尾只能用xls,因为如果用.xlsx的话用微软的软件打不开,WPS才能打开#如果存在很多数据的时候,用基本写入是不现实的,这个时候我们可以使用循环进行操作

#循环方式一:

stus = [[1,‘test2’,‘123456’],[2,‘test2’,‘123456’],[3,‘test3’,‘123456’]]

book= xlwt.Workbook() #创建一个Excel表格

sheet = book.add_sheet(‘test_sheet1’) #给Excel表中添加一个sheet页

line = 0 #控制写入的行数

for stu instus:

col= 0 #控制写入的列数

for s instu:

sheet.write(line,col,s)

col+= 1line+= 1book.save(‘stu.xls’)#循环方式二:#enumerate 方法自动计算循环的下标,循环使用的时候,先取下标在取值

stus = [[1,‘test2’,‘123456’],[2,‘test2’,‘123456’],[3,‘test3’,‘123456’]]

book= xlwt.Workbook() #创建一个Excel表格

sheet = book.add_sheet(‘test_sheet1’) #给Excel表中添加一个sheet页

for line,stu inenumerate(stus):for col,s inenumerate(stu):

sheet.write(line,col,s)

book.save(‘stu.xls’)

说明:cell_overwrite_ok=True

在添加sheet页的时候,如果不指定cell_overwrite_ok则默认值为false;意思就是如果对一个sheet表中同一位置进行多次编辑这个时候执行Python代码会出现保存;如果添加了cell_overwrite_ok=True,那么对同一位置的值进行写入的时候则会覆盖写入不会报错。

book = xlwt.Workbook() #创建一个Excel表格

sheet = book.add_sheet(‘test_sheet1’,cell_overwrite_ok=True) #给Excel表中添加一个sheet页

sheet.write(0,0,‘id’) #向sheet表中写入数据,第一个参数代表的行数,第二个参数代表的列数,第三个参数代表写入的内容

sheet.write(0,1,‘name’)

sheet.write(1,0,1)

sheet.write(1,1,‘哈哈’)

sheet.write(1,1,‘测试哈哈’)

book.save(‘test.xls’)

2、对Excel的读操作

importxlrd

book= xlrd.open_workbook(‘stu.xls’) #打开Excel文件,可以制定绝对路径的文件#sheet = book.sheet_by_name(‘Sheet1’) #通过sheet表的名称来读取要操作的表

sheet = book.sheet_by_index(1) #通过Excel表中sheet也得下标确定要读取的表,下标从左往右依次为:0,1,2……

rows = sheet.nrows #获取表中所有的行数

cols = sheet.ncols #获取表中所有的列数

print(‘表中的总行数是:%s’%(rows))print(‘表中的总列数是:%s’%(cols))print(sheet.cell(0,0).value) #获取指定单元格的内容

print(sheet.cell_value(0,0)) #获取指定单元格的内容

print(sheet.cell(0,1).value) #获取指定单元格的内容

print(sheet.cell_value(0,1)) #获取指定单元格的内容

print(sheet.row_values(0)) #获取整行的内容,以列表格式显示

print(sheet.col_values(0)) #获取整列的内容,以列表格式显示

运行结果:

表中的总行数是:4表中的总列数是:2a

a

e

e

[‘a’, ‘e’]

[‘a’, ‘b’, ‘c’, ‘d’]#循环打印每一行的数据

for i inrange(rows):print(sheet.row_values(i))

运行结果:

[‘a’, ‘e’]

[‘b’, ‘f’]

[‘c’, ‘g’]

[‘d’, ‘h’]#循环打印每一列的值:

for i inrange(cols):print(sheet.col_values(i))

运行结果:

[‘a’, ‘b’, ‘c’, ‘d’]

[‘e’, ‘f’, ‘g’, ‘h’]#循环读取每一个元素的值

for i inrange(rows):for j inrange(cols):print(‘第%s行第%s列的值是:%s’%(i,j,sheet.cell_value(i,j)))

运行结果:

第0行第0列的值是:a

第0行第1列的值是:e

第1行第0列的值是:b

第1行第1列的值是:f

第2行第0列的值是:c

第2行第1列的值是:g

第3行第0列的值是:d

第3行第1列的值是:h#其它方法:

importxlrd

book= xlrd.open_workbook(‘stu.xls’) #打开Excel文件,可以制定绝对路径的文件

sheet = book.sheet_names()[1] #该函数是用来获取sheet页的表名称的,这个代表获取Excel表中下标是1的表名称值

print(sheet)

sheet= book.sheet_loaded(‘Sheet1’) #判断表是否存在,存在返回true 不存在报错

print(sheet)

运行结果:

Sheet1

True

3、对Excel文件的修改

对Excel修改的时候使用xlutils模块,该模块需要和xlrd模块一起使用

修改的方法就是:1、先用用xlrd打开一个Excel;2、用xlutils模块中的copy功能,复制一个Excel ;3、对赋值的Excel进行修改;

from xlutils importcopy

book= xlrd.open_workbook(‘stu.xls’)

new_book=copy.copy(book)

sheet= new_book.get_sheet(1) #通过下标获取要操作的sheet页

sheet.write(0,1,‘wyh’)

sheet.write(1,2,‘wyh1’)

new_book.save(‘stu.xls’)

相关文章:

Python操作Excel

Python中对Excel文件的操作包括:读、写、修改。如果要对其进行如上的操作需要导入Python的第三方模块:xlrd、xlwd、xlutils,其分别对应Python的读、写、修改的操作 一、安装Python的第三方模块 二、操作Excel的基本步骤 1、导入响对应的模…...

Codeforces Round #853 (Div. 2) C. Serval and Toxel‘s Arrays【统计次数,算贡献】

链接 传送门 分析 这道题想法其实很简单,样例的计算方法一定要看懂。以样例1为例,根据他的操作方法可以得到两个新的数组,和一个原来的数组,总共三个数组。 1 2 3 4 2 3 4 5 3 他们两两配对去重,求出总的value。由于每…...

微信小程序-1:比较两数的大小

程序来源》微信小程序开发教程&#xff08;第二章&#xff09; 主编&#xff1a;黄寿孟、易芳、陶延涛 ISBN&#xff1a; 9787566720788 程序运行结果&#xff1a; <!--index.wxml--> <view class"container"> <text>第一个数字&#xff1a;&…...

数据结构——树

深度优先/广度优先遍历深度优先&#xff1a;访问根节点对根节点的 children 挨个进行深度优先遍历const tree {val: "a",children: [{val: "b",children: [{val: "d",children: [],},{val: "e",children: [],},],},{val: "c&quo…...

【华为OD机试模拟题】用 C++ 实现 - 找到它(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明找到它题目输入输出示例一输入输出示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD …...

python中yield的使用

在 Python 中&#xff0c;yield 是一个关键字&#xff0c;它用于定义生成器函数。生成器函数是一个特殊的函数&#xff0c;可以返回一个迭代器&#xff0c;当生成器函数被调用时&#xff0c;它不会立即执行&#xff0c;而是返回一个生成器对象&#xff0c;通过迭代生成器对象可…...

GO进阶(4) 深入Go的内存管理

Go语言成为高生产力语言的原因之一自己管理内存&#xff1a;Go抛弃了C/C中的开发者管理内存的方式&#xff0c;实现了主动申请与主动释放管理&#xff0c;增加了逃逸分析和GC&#xff0c;将开发者从内存管理中释放出来&#xff0c;让开发者有更多的精力去关注软件设计&#xff…...

【C++】类与对象理解和学习(下)

放在专栏【C知识总结】&#xff0c;会持续更新&#xff0c;期待支持&#x1f339;建议先看完【C】类与对象理解和学习&#xff08;上&#xff09;【C】类与对象理解和学习&#xff08;中&#xff09;本章知识点概括Ⅰ本章知识点概括Ⅱ初始化列表前言在上一篇文章中&#xff0c;…...

【Neo4j】Spring Data Neo4j APi阅读随笔

引言 关于Spring boot整合Neo4j的官方api翻译&学习随笔 (TOC) 一、准备工作 1.注入依赖 <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId></dependency>2.配置yml文件 这里是本…...

JVM内存模型简介

1 程序计数器 程序计数器是一块较小的内存空间&#xff0c;可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令&#xff0c;分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完。 ja…...

k8s如何给node添加标签

一、为什么需要标签&#xff1f; k8s集群如果由大量节点组成&#xff0c;可将节点打上对应的标签&#xff0c;然后通过标签进行筛选及查看,更好的进行资源对象的相关选择与匹配 二、怎么查看目前node上具有的标签 [rootmaster01 ~]# kubectl get node --show-labels NAME …...

【大数据Hive】Hive ddl语法使用详解

一、前言 使用过关系型数据库mysql的同学对mysql的ddl语法应该不陌生&#xff0c;使用ddl语言来创建数据库中的表、索引、视图、存储过程、触发器等&#xff0c;hive中也提供了类似ddl的语法。本篇将详细讲述hive中ddl的使用。 二、hive - ddl 整体概述 在Hive中&#xff0c;DA…...

Connext DDS录制服务 Recording Service(2)

2.4 远程管理 控制客户端(如RTI管理控制台)可以使用此接口远程控制录制服务。 注:记录服务远程管理基于第10.3节中描述的RTI远程管理平台。有关录制服务中远程管理工作的详细讨论,请参阅该手册 下面是所有支持操作的API引用。 2.4.1 启用远程管理 默认情况下,在录制服务中…...

mysql数据类型选择

数据类型选择 完整性约束 是完整性约束是为保证数据库中数据的正确性和相容性&#xff0c;对关系模型提出的某种约束条件或规则。 通常包括&#xff1a;实体完整性约束、参照完整性约束、域完整性约束、用户自定义完整性约束。 实体完整性(Entity integrity)是指主键必须非空…...

【Java】Spring Boot 配置文件

文章目录SpringBoot 配置文件1. 配置文件的作用2. 配置文件的格式3. properties配置文件说明3.1 properties基本语法3.2 读取配置文件3.3 properties缺点分析4. yml配置文件说明4.1 yml基本语法4.2 yml使用进阶4.2.1 yml配置不同的数据类型及null4.2.1 yml配置的读取4.2.2 配置…...

AtCoder Beginner Contest 290 G. Edge Elimination(思维题 枚举+贪心)

题目 T(T<100)组样例&#xff0c;每次给出一棵深度为d的k叉树&#xff0c; 其中&#xff0c;第i层深的节点个数为 保证k叉树的所有节点个数tot不超过1e18&#xff0c; 求在k叉树上构建一棵大小恰为x的连通块&#xff0c;所需要断开的最少的树边的条数(x<tot<1e18)…...

数据挖掘概述

目录1、数据挖掘概述2、数据挖掘常用库3、模型介绍3.1 分类3.2 聚类3.3 回归3.4 关联3.5 模型集成4、模型评估ROC 曲线5、模型应用1、数据挖掘概述 数据挖掘&#xff1a;寻找数据中隐含的知识并用于产生商业价值 数据挖掘产生原因&#xff1a;海量数据、维度众多、问题复杂 数…...

linux kernel iio 架构

linux kernel iio 架构讲解Linux IIO&#xff08;Industrial I/O&#xff09;架构是Linux内核提供的一种用于支持各种类型传感器和数据采集设备的子系统&#xff0c;包括温度、压力、湿度、加速度、光度等多种传感器。IIO架构的核心是一个通用的IIO子系统&#xff0c;它提供了一…...

Socket通信详解

Socket通信详解 文章目录Socket通信详解Socket流程介绍函数介绍编程实例Socket流程介绍 socket通信类似于电话通信&#xff0c;其服务器基本流程就是 Created with Raphal 2.3.0安装电话socket()分配电话号码bind()连接电话线listen()拿起话筒accept()函数介绍 socket() 其中…...

多分类、正则化问题

多分类问题 利用逻辑回归解决多分类问题&#xff0c;假如有一个训练集&#xff0c;有 3 个类别&#xff0c;分别为三角形 &#x1d466; 1&#xff0c;方框&#x1d466; 2&#xff0c;圆圈 &#x1d466; 3。我们下面要做的就是使用一个训练集&#xff0c;将其分成 3 个二…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

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

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

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...