Python轻松玩转excel操作指导

目录

一、一图概览

二、表格操作

三、内容操作

四、单元格操作

五、Pandas实现表格操作

六、常见场景示例


一、一图概览

    ​    ​本文主要对openpyxl库的常用表格操作进行了梳理,熟练的运用后可极大地提升工作效率。

二、表格操作

#创建一个表格sheet.xlsx
#使用openpyxl创建工作簿
wb=workbook.workbook.Workbook()  #创建一个工作簿对象
wb.save("test.xlsx")     #在py文件同级目录下创建一个空表
wb.save(r"C:\Users\ZYP_PC\Desktop\test_python\file\test2.xlsx")  #在指定目录下创建表格sheet2.xlsx

#在表格中创建子表
wb.create_sheet(title="sheet_a")  #创建子表sheet_a
wb.save("test.xlsx")             #将子表保存到工作簿test.xlsx中

#从工作簿test.xlsx中删除子表sheet_b
wb=load_workbook("test.xlsx")
delete_sheet=wb["sheet_b"]   #子表不存在会报文件不存在错误
wb.remove(delete_sheet)
wb.save("test.xlsx")

#修改test.xlsx中子表sheet_b的名称为sheet_a
wb=load_workbook("test.xlsx")   #加载工作簿test.xlsx
sheet_names=wb.sheetnames   #获取所有子表名称
old="sheet_b"
new="sheet_a"
ws=wb[old]     #获取old的子表
ws.title=new   #修改title属性值
wb.save("test.xlsx")

三、内容操作

#单元格内容遍历
wb=load_workbook("20240417.xlsx")
ws=wb.active
for row in ws.iter_rows(values_only=True):  #按行优先遍历,没有内容的显示为None
    for r in row:
        print(r)
for col in ws.iter_cols(values_only=True):  #按列优先遍历,没有内容的显示为None
    for c in col:
        print(c)

#读取指定位置A1的值
A1=ws["A1"].value

#读取指定行如第3行的内容
row=[]
for col in ws.iter_cols(values_only=True):
    row.append(col[2])   #索引从0开始,因为第3行为索引值为2
print("row",row)

#读取指定列如第2列的内容
col=[]
for row in ws.iter_rows(values_only=True):
    col.append(row[1])   #索引从0开始,因为第二列为1
print("col",col)

内容操作之内容写入

#在工作簿test.xlsx的工作表的sheet_b中的单元格C3写入你好
#方法1(以字母加数字的方式表示坐标)
wb=load_workbook("test.xlsx")
ws=wb["sheet_b"]
ws["A3"]="你好"
wb.save("test.xlsx")  #保存修改,修改内容时表格不能打开,否则会提示无权限
#方法2(以行列数字序号表示)
wb=load_workbook("test.xlsx")
ws=wb["sheet_b"]
r=3
c=3
ws.cell(row=r,column=c,value="你好1")
wb.save("test.xlsx")  #保存修改,修改内容时表格不能打开,否则会提示无权限

##逐行写入
wb=workbook.Workbook()       #创建工作簿
ws=wb.active
ws.title="运行时间与内存"  #设置默认表格名称sheet为指定的名称
ws=wb.create_sheet(title="运行时间与内存") #也可以另外创建子表
excel=r"C:\Users\ZYP_PC\Desktop\test_python\test2.xlsx"
start_row=3 #从指定行开始写入
ws.cell(row=start_row,column=1,value="工程名")
ws.cell(row=start_row,column=2,value="布局时间")
ws.cell(row=start_row,column=3,value="布线时间")
ws.cell(row=start_row,column=4,value="report_timing")
ws.cell(row=start_row,column=5,value="PR内存")
ws.append(("工程名1","布局时间","布线时间","report_timing时间","PR内存")) #各列的名称
data=[["prj1","1","22","23","34"],["prj2","11","22","23","34"],["prj3","111","22","23","34"]]
for row in data:
    print("row ",row)
    ws.append(row)
wb.save(excel)

四、单元格操作

from openpyxl import workbook
from openpyxl import load_workbook
from openpyxl.styles import Font,Alignment,Color,PatternFill
#打开指定表格进行单元格操作
excel=r"C:\Users\ZYP_PC\Desktop\test_python\test2.xlsx"
wb=load_workbook(excel)
ws=wb.active
ws=wb["测试子表"]  #进行操作的子表

#插入2行
ws.insert_rows(4,2)   #从第4行的位置插入2行

#插入3列
ws.insert_cols(3,1)  #从第3列开始插入1列

#删除指定行
ws.delete_rows(10)  #删除第10行

#删除指定列
ws.delete_cols(3)  #删除第3列

#合并单元格
ws.merge_cells("A4:B4")  #将A4和B4进行合并单元格操作

#取消合并单元格
ws.unmerge_cells("A4:B4") #取消将A4和B4进行合并单元格操作

#设置单元格格式
font=Font(name="Arial",size=12,bold=True,italic=False,color="FF0000",) #对单元格内容进行字体格式,大小,加粗,颜色当进行设置
ws["B3"].font=font
alignment=Alignment(horizontal="center",vertical="center")  #对单元格内容进行对齐设置,例如此处为居中对齐
ws["A5"].alignment=alignment
fill=PatternFill(start_color="FFFF00",end_color="FFFF00",fill_type="solid")  #对单元格设置背景颜色,此处为黄色
ws["A5"].fill=fill
wb.save(excel)

对于单元格格式的设置中,颜色与代码的映射关系可在下面网站进行查询

https://www.bchrt.com/tools/rgbcolor/

内容的对齐方式可选值有horizontal(水平对齐方式,包括 "general", "left", "center", "right", "fill", "justify", "centerContinuous","distributed")

vertical(垂直对齐方式,包括"top", "center", "bottom", "justify", "distributed")

textRotation(文字旋转),wrapText (自动换行),shrinkToFit(自动缩放到最佳位置),indent(缩进),relativelndent(相对缩进),justifyLastLine(最后一行对齐),reading Order(读顺序对齐)

五、Pandas实现表格操作

下面针对pandas库的一些常用表格查询操作进行了梳理

##使用pandas库处理表格,pandas对于数据的处理功能更强大,更适合对数据进行各种计算
import pandas as pd
path_excel=r"C:\Users\ZYP_PC\Desktop\test_python\pandas.xlsx"  #工作簿路径
#方法1,以列表形式写入
# data = [('张三', 20, '男'),
#         ('李四', 25, '女'),
#         ('王五', 30, '男')]
#df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'])
#方法2,以字典形式写入
data = {'姓名': ['张三', '李四', '王五'],
        '年龄': [20, 25, 30],
        '性别': ['男', '女', '男']}
df=pd.DataFrame(data)    #pandas不支持直接创建工作簿,data数据可以是列表,字典
df.to_excel(path_excel,index=False)   #创建表格pandas.xlsx,并将data数据写入

#数据查询
path_excel=r"C:\Users\ZYP_PC\Desktop\test_python\pandas1.xlsx"
data=pd.read_excel(path_excel)  #读取表格
size=data.size    #获取表格的数据个数
shape=data.shape   #获取数据的行列数,不包含标题栏
#查看指定行和指定列的内容
print(data.loc[1:2,"年龄"])   #查找1到2行中列名为年龄的内容
# 查看前4行内容
print(data.head(4))
#查看后5行内容
print(data.tail(5))
#根据列名选择列
single_col=data["年龄"]   #选中单列
multi_col=data[["年龄","性别"]]   #选中多列
#选择行
single_row=data.iloc[0:1]   #除去标题行后的内容进行筛选
print("row",single_row)

# print(data.size,data.shape)
for index,row in data.iterrows():  #按行逐条遍历
        print("row:",row)

六、常见场景示例

示例1 遍历整个工作簿查找包含指定内动的单元格

from openpyxl import workbook
from openpyxl import load_workbook
excel=r"C:\Users\ZYP_PC\Desktop\test_python\测试表格.xlsx"
wb=load_workbook(excel)
ws=wb.active
search_value="搜索的内容"
site=[]     #保存查找结果的单元格地址
sheet_list=[]   #保存查找结果所在的子表名称
for sheet_name in wb.sheetnames:
    sheet=wb[sheet_name]
    for row in sheet.iter_rows():
        for cell in row:
            if cell.value==search_value:
                site.append(cell.coordinate)
                cell.value=""
                sheet_list.append(sheet_name)

#示例2 在指定子表的指定范围内进行指定内容的查找,范围可指定行范围,列范围或区域范围

from openpyxl import workbook
from openpyxl import load_workbook
excel=r"C:\Users\ZYP_PC\Desktop\test_python\测试表格.xlsx"
wb=load_workbook(excel)
ws=wb.active
ws=wb["VCC"]     #查找的子表名称为"VCC"
search_value="INPUT"
cells=ws["A3:C6"]  #指定一个区域
# cells=ws["B:F"]  #指定B到F列
# cells=ws[2:6]   #指定第2到第6行
site=[]
for row in cells:
    for cell in row:
        if search_value in str(cell.value):
            site.append(cell.coordinate)
print(site)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/647139.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[论文阅读笔记31]Mamba (Selective Structured State Space Model) 及其应用

最近想学一下Mamba模型,奈何看了很多视频还是感觉一知半解,因此做一篇笔记,顺便介绍一下Mamba结构作为CV backbone和时间序列预测领域的应用。 论文1. Mamba: Linear-Time Sequence Modeling with Selective State Spaces 0. Abstract 现有…

linux查看是否被入侵(一)

1、查看当前系统状态 [rootbastion-IDC ~]#top #一般挖矿等病毒点用CPU比较大 2、查看当前登录用户(w\who) 3、检查系统日志 检查系统错误登陆日志,统计IP重试次数 [rootbastion-IDC ~]# lastb 4、查看近期用户登录情况 [rootkvm01 ~]# last -n 5 #-n 5 表示…

【同构字符串】python

思路: 先记录同一个值出现的次数,再将字典中的值取出,比较2个列表即可 代码: class Solution:def isIsomorphic(self, s: str, t: str) -> bool:dit1dict()dit2dict()for i in range(len(s)):if s[i] not in dit1:dit1[s[i…

入门五(项目介绍及登录和发布需求)

软件缺陷判定标准 项目中缺陷的管理流程 使用Excel对于缺陷进行管理 使用工具管理缺陷 一、项目背景 传智作为一个IT教育机构,拥有自己开发且实际运营的产品; 将开发和运营的技术作为授课的内容,对于学员而言学到的都是一手的真实案例和…

vue data中的return

vue 的data return 是干啥的呢,vue中页面中绑定的变量都要放在data的return中,可以赋值,值可在script中改,修改引用就用this了 如果不使用return包裹的数据会在项目的全局中可见,会造成变量污染; 使用retu…

Mixed-precision计算原理(FP32+FP16)

原文: https://lightning.ai/pages/community/tutorial/accelerating-large-language-models-with-mixed-precision-techniques/ This approach allows for efficient training while maintaining the accuracy and stability of the neural network. In more det…

Android BACK键和HOME键应用差异详解

文章目录 1、应用层分析1.1 BACK键功能实现 1.2 HOME键功能实现 1.3 BACK键与HOME键的区别 2、系统层分析2.1 BACK键的处理2.2 HOME键的处理2.3 代码分析BACK键HOME键BACK键的系统代码分析HOME键的系统代码分析BACK键HOME键 3、优缺点分析3.1 BACK键3.2 HOME键 4、项目中的使用…

3小时-入门短视频创作:短视频创作入门必修(15节视频课)

课程目录 1、先导课.mp4 2、建立视听思维.mp4 3、口语化.mp4 4、具象化.mp4 5、建立选题思维.mp4 6、2个小白好上手的选题技巧.mp4 7、建立开场思维.mp4 8、3个口播视频方能开场套路.mp4 9、建立脚本结构思维.mp4 10、爆款口指的3大结构.mp4 11、建立标题思维.mp4 …

【顶刊新文】nature plants|植物高度作为高山碳固存和生态系统对变暖响应的指标

文章简介 论文名称:Plant height as an indicator for alpine carbon sequestration and ecosystem response to warming(植物高度作为高山碳固存和生态系统对变暖响应的指标) 第一作者及单位:Quan Quan(中国科学院地…

服务器被黑?快速检测和识别系统中的恶意进程

在管理和维护服务器时,检测和识别系统中的恶意进程是非常重要的。本文将详细介绍几种常用方法和工具,帮助您有效地检测和处理恶意进程,确保系统的安全性。 方法一:使用系统监控工具 1.1. 使用 ps 命令 ps 命令可以列出系统中所有正在运行的进程。使用以下命令查看特定用户…

推荐丨快速申请免费域名证书

背景: 域名是一个IP地址上的“面具” 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。 域名不仅便于记…

安装mamba时报错bare_metal_version

原因:缺少cuda118的环境版本,直接安装 nvidia/label/cuda-11.8.0 可解决,代码如下: conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc

C++笔记:三种适配器(分别修饰函数、迭代器、容器)

Algorithms看不见Containers,对其一无所知。所以,它所需要的一切信息都必须从iterators取得,而iterators(由Containers提供)必须能够回答Algorithm的所有提问,才能搭配该Algorithm的所有操作。 1. C 标准库…

Linux之LLVM、Clang、Clang++区别及用法实例(六十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

SpringCloud系列(26)--OpenFeign超时控制

前言:在上一章节中我们简单的介绍了如何使用OprnFeign去调用微服务,因为消费侧和服务侧是两个不同的微服务,这样可能会出现超时的现象,例如服务侧需要3秒处理任何才能返回结果,但消费侧可能2秒就断开连接了&#xff0c…

Django 里的静态资源调用

静态资源:图片,CSS, JavaScript 一共有两种方法 第一种方法 在项目的文件夹里创建名为 static 文件夹 在该文件夹里,添加静态资源 在 settings.py 里添加路径 import os# Static files (CSS, JavaScript, Images) # https://docs.djan…

基于Arduino IDE的ESP32开发环境搭建

文章目录 一. Arduino IDE安装二. Arduino IDE安装ESP开发包 一. Arduino IDE安装 Arduino官网下载IDE软件 解压下载好的安装包,以管理员身份运行Arduino IDE软件 IDE第一次启动会安装各种驱动,直接点击确定就行 二. Arduino IDE安装ESP开发包 将…

只需一行代码提高3DGS重建质量!随机初始化新SOTA

论文标题: Relaxing Accurate Initialization Constraint for 3D Gaussian Splatting 论文作者: Jaewoo Jung, Jisang Han, Honggyu An, Jiwon Kang, Seonghoon Park and Seungryong Kim 导读: 3DGS在新视角合成和三维重建方面展现了令人印…

SSH 远程登录系统和远程拷贝

文章目录 目录 文章目录 前言 一.SSH的基本用法 SSH基本用法: SSH无密码登录 二.SSH安全设置 三.SSH限制用户 前言 很多时候服务器并没有服务器,我们也不能每次都通过控制台去管理服务器,这时候就需要远程登录,相比于Telnet&a…

C语言指针相关知识(第五篇章)(非常详细版)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、sizeof和strlen对比二、数组之间的比较(依据strlen和sizeof来呈现)(一)、一维整型数组(二&#…