python使用openpyxl操作excel
文章目录
- 前提
- 读取已有excel
- 创建一个excel工作簿对象
- 创建excel工作簿中的工作表
- 获取工作表
- 第一种:.active 方法
- 第二种:通过工作表名获取指定工作表
- 第三种:.get_sheet_name()
- 修改工作表的名称
- 数据操作
- 写入数据
- 按单元格写入
- 通过指定坐标赋值方式,将数据写入单元格。
- 按行写入数据
- 读取数据
- 获取工作表中已有全部数据
- 获取指定范围内的值
- 一个示例
前提
使用前需要先安装下这个模块
pip install openpyxl
读取已有excel
情况2:读取本地已存在的excel,用来后续进行读写等处理。
方法:load_workbook(已有excel文件路径),如果路径中excel文件不存在,将会报错。
from openpyxl import load_workbook
# 读取已存在的excel工作薄
wb = load_workbook('excel_test.xlsx')
创建一个excel工作簿对象
进行读写、修改等操作前,需要创建一个可供操作的excel工作簿对象。
使用Workbook类,新建一个excel工作簿对象,用来后续进行读写等处理。
from openpyxl import Workbook
# 新建一个excel工作簿对象
wb = Workbook()
# 保存新建的excel工作簿
wb.save('excel_test.xlsx')
- (1)该类在新建excel工作簿的同时,也会新建了一个工作表(默认名为:Sheet)。
- (2).save(保存路径)方法,对excel进行保存,写入或修改excel后,都需要保存。
- (3)如果当前保存路径下,已经有一个同名excel文件,不会提示且原文件被覆盖。
创建excel工作簿中的工作表
openpyxl提供了可自定义工作表的方法。
工作表,即是常见说法的【Sheet】。
创建自定义名称的工作表,语法如下:
Workbook.create_sheet(title,index)title:工作表的名称,可省略,系统自动命名(Sheet, Sheet1, Sheet2, ...)。
index:工作表的位置,可省略,默认插在工作表末尾,0表示插在第一个。
# 自定义工作表
ws1 = wb.create_sheet('test')
ws2 = wb.create_sheet()
# 保存
wb.save('excel_test.xlsx')
获取工作表
进行读写、修改数据等操作时,首先需要获取工作簿中的工作表(即Sheet),作为操作对象。
3种获取工作表的方法,如下:
第一种:.active 方法
默认获取工作簿的第一张工作表
# 获取第一张工作表
ws = wb.active
第二种:通过工作表名获取指定工作表
ws = wb['test']
print(ws)
第三种:.get_sheet_name()
通过工作表名,使用方法:.get_sheet_name(工作表名)
ws3 = wb.get_sheet_by_name('Sheet1')
print(ws3)
修改工作表的名称
使用.title属性,修改工作表名称。
修改工作表名称前,要先指定需要修改的工作表
# 获取要修改的工作表
ws1 = wb['text']
ws2 = wb['Sheet1']
# 修改工作表的名称
ws1.title = '测试'
ws2.title = '测试1'
# 保存
wb.save('excel_test.xlsx')
数据操作
以下是openpyxl最常用的【读写】操作。
在进行【读写】操作时,首先需要创建一个excel工作簿对象,然后对该对象中的工作表(sheet)进行操作。
以下,将以读取本地已存在的excel_test.xlsx作为工作簿对象wb,进行举例。
from openpyxl import load_workbook
# 读取已存在的excel工作薄
wb = load_workbook('excel_test.xlsx')
写入数据
按单元格写入
直接赋值法
# 选择要写入的工作表sheet1 = wb['测试']
sheet1['A2'] = '姓名'
# 保存
wb.save('excel_test.xlsx')
通过指定坐标赋值方式,将数据写入单元格。
方法:.cell(row,column,value)
row :行, column :列数,value:需要写入的数据。
# 选择要写入的工作表
sheet1 = wb['测试']
# 写入数据
sheet1.cell(row=3, column=4, value='一位代码')
# 保存
wb.save('excel_test.xlsx')
按行写入数据
.append(data)方法,传一个单层列表格式数据。
# 选择要写入的工作表
sheet1 = wb['测试1']
# 写入一行数据
data1 = [1, 2, 3, 4]
sheet1.append(data1)
# 保存
wb.save('excel_test.xlsx')
注:append()只能接受单层列表格式数据,多层列表需要循环写入
读取数据
获取工作表中已有全部数据
.values:获取目标工作表中已有全部数据,返回值是一个对象,需要进行转换。
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 获取所有值
print('返回值:', sheet1.values)
print('返回值转换后:', list(sheet1.values))
还可以用循环来写,如下:
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 循环获取
for row in sheet1.values:print(row)
获取指定范围内的值
获取指定单元格的值
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 指定单位格的值
cell1 = sheet1['A1']
print(cell1.value)
获取指定范围内单元格的值
# 选择需要获取的工作表
sheet1 = wb['测试1']
# 指定坐标范围
cells = sheet1['A1':'B2'] # 还可以写成['A1:B2']
print('指定范围:', cells)
# 获取单元格的值
for row in cells:for cell in row:print(cell.value)
一个示例
读取一个文件中一列数据,然后进行转置,保存为另外一个文件。
目的实际是为了来处理网络配置文件的。
from openpyxl import load_workbookwb_obj = load_workbook('F:\\Desktop\\pyprj\\testorg.xlsx')
ws = wb_obj.active# 转置
delta = 2 #转置开始位置偏移量
this_row = 1 #转置行下标
this_col = 1 #转置列下标
for row_num in range(1, ws.max_row + 1):this_col = this_col + 1 #列下标加1cell_value = ws.cell(row=row_num,column=1).value #要转置的值if cell_value.strip() == "#":this_row = this_row + 1 #行下标加1this_col = 0 #列下标重新开始ws.cell(row=this_row, column=this_col+delta).value = cell_valuewb_obj.save('99乘法表.xlsx')
wb_obj.close()
原始表

转置后

相关文章:
python使用openpyxl操作excel
文章目录 前提读取已有excel创建一个excel工作簿对象创建excel工作簿中的工作表获取工作表第一种:.active 方法第二种:通过工作表名获取指定工作表第三种:.get_sheet_name() 修改工作表的名称数据操作写入数据按单元格写入通过指…...
使用keepalived时虚拟IP漂移注意事项
什么是Keepalived服务 keepalived是一个开源的软件项目,用于实现高可用性(HA)的网络服务器负载均衡和故障转移。它允许将多台服务器组合在一起,形成一个虚拟服务器集群,实现负载均衡和故障转移。 keepalived的核心功…...
32阵元 MVDR和DREC DOA估计波束方向图对比
32阵元 MVDR和DREC DOA估计波束方向图对比 一、原理 MVDR原理:https://zhuanlan.zhihu.com/p/457528114 DREC原理(无失真响应特征干扰相消器):http://radarst.ijournal.cn/html/2019/3/201903018.html 主要参数: 阵…...
OpenCV-11颜色通道的分离与合并
本次我们使用两个比较重要的API split(mat)将图像的通道进行分割。 merge((ch1,ch2,ch3))将多个通道进行融合。 示例代码如下: import cv2 import numpy as npimg np.zeros((480, 640, 3),…...
从0到1入门C++编程——01 C++基础知识
文章目录 一、工具安装二、新建项目三、设置字体、注释、行号四、C基础知识1.数据类型2.输入输出3.运算符4.选择、循环结构5.跳转语句6.数组7.函数8.指针9.结构体 一、工具安装 学习C使用到的工具是Visual Studio,Visual Studio 2010旗舰版下载链接:点此…...
C#编程-编写和执行C#程序2
C#编程-编写和执行C#程序 问题陈述 Dvid所在的团队正在为网球比赛开发自动排名软件。他负责创建一个程序来接受网球选手的以下详细信息并将其显示在屏幕上: 1.姓名 2.排名 您需要帮助David创建该程序。 要创建所需的程序,David需要执行以下步骤: 1.打开“记事本”。 2.在“…...
Day02-ES6
一.proxy代理 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head>…...
2023年12月记录内容管理
文章目录 前言1.[vue构建项目](https://mp.csdn.net/mp_blog/creation/editor/134829688)2. [Nodejs后端express框架](https://mp.csdn.net/mp_blog/creation/editor/134841711)3. [前端知识点](https://mp.csdn.net/mp_blog/creation/editor/132810879)4.[前端知识点-vue篇&am…...
【测试基础】构造测试数据之 MySQL 篇
构造测试数据之 MySQL 篇 作为一名测试工程师,我们经常会构造测试数据进行一些功能验证。为了暴露更多的问题,在测试数据的构造上,我们应该尽可能的构造不同类型字段的数据,且一张表的字段最好不低于 10 10 10 个。 对于 MySQL …...
基于单片机的语音识别自动避障小车(论文+源码)
1.系统设计 此次基于单片机的语音识别自动避障小车,以STC89C52单片机作为系统的主控制器,利用超声波模块来实现小车与障碍物距离的测量并通过LCD液晶显示,当距离低于阈值时会通过WT588语音模块进行报警提示,并且小车会后退来躲避…...
2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项样题卷①
2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项(高职组) 样题(第1套) 目录 2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项(高职组) 样题(第1套) 模块一…...
【信息安全原理】——入侵检测与网络欺骗(学习笔记)
📖 前言:在网络安全防护领域,防火墙是保护网络安全的一种最常用的设备。网络管理员希望通过在网络边界合理使用防火墙,屏蔽源于外网的各类网络攻击。但是,防火墙由于自身的种种限制,并不能阻止所有攻击行为…...
JVM GC 算法原理概述
对于JVM的垃圾收集(GC),这是一个作为Java开发者必须了解的内容,那么,我们需要去了解哪些内容呢,其实,GC主要是解决下面的三个问题: 哪些内存需要回收? 什么时候回收&…...
【数值分析】LU分解解Ax=b,matlab自己编程实现
LU分解(直接三角分解,Doolittle分解) A x b , A L U Axb \,\,,\,\, ALU Axb,ALU { L y b U x y \begin{cases} Lyb \\ Uxy \end{cases} {LybUxy 矩阵 L {L} L 的对角元素为 1 {1} 1 ,矩阵 U {U} U 的第一行和 A {A} A …...
华为HCIE-Datacom课程介绍
厦门微思网络HCIE-Datacom课程介绍 一、认证简介 HCIE-Datacom(Huawei Certified ICT Expert-Datacom)认证是华为认证体系中的顶级认证,HCIE-Datacom认证定位具备坚实的企业网络跨场景融合解决方案理论知识,能够使用华为数通产品…...
QT(C++)-QTableWight添加行和删除空行
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、QTableWidget的添加行3、删除行 1、前言 最近要用QT开发项目,对QT不是很熟,就根据网上的查到的知识和自己的摸索,将一…...
软件测试/测试开发丨Python 面向对象编程思想
面向对象是什么 Python 是一门面向对象的语言面向对象编程(OOP):Object Oriented Programming 所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界,按照现实世界中的逻辑去处理问题,分析问题中…...
一次降低进程IO延迟的性能优化实践——基于block层bfq调度器
如果有个进程正频繁的读写文件,此时你vim查看一个新文件,将会出现明显卡顿。即便你vim查看的文件只有几十M,也可能会出现卡顿。相对的,线上经常遇到IO敏感进程偶发IO超时问题。这些进程一次读写的文件数据量很少,正常几…...
C语言易错知识点十(指针(the final))
❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ 许久不见,甚是想念,真的是时间时间,你慢些吧,不能再让头发变秃…...
React 18 新增的钩子函数
React 18 引入了一些新的钩子函数,用于处理一些常见的场景和问题。以下是 React 18 中引入的一些新钩子函数以及它们的代码示例和使用场景: useTransition: 代码示例:import { useTransition } from react;function MyComponent()…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
