python基础-13-处理excel电子表格

文章目录

  • 【README】
  • 【13】处理Excel电子表格
    • 【13.1】Excel文档
    • 【13.2】安装openpyxl模块
    • 【13.3】读取Excel文档
      • 【13.3.1】使用openpyxl模块打开excel文档
      • 【13.3.2】从工作簿取得工作表
      • 【13.3.3】从工作表sheet获取单元格cell
      • 【13.3.5】从表中获取行和列
      • 【13.3.6】工作簿、工作表、单元格复习
    • 【13.5】写入Excel文档
      • 【13.5.1】创建并保存Excel文档
      • 【13.5.2】创建和删除工作表
      • 【13.5.3】把值写入单元格

【README】

本文总结自《python编程快速上手-让繁琐工作自动化》第13章,非常棒的一本书,墙裂推荐;



【13】处理Excel电子表格

【13.1】Excel文档

1)Excel文档:就是一个工作簿,一个工作簿保存到xlsx文件;一个工作簿可以有多个工作表,即sheet;

【13.2】安装openpyxl模块

D:\studynote\00-ai-llm\workbench\PythonBasicStudy\.venv\Scripts>pip install openpyxl
Collecting openpyxlDownloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
Collecting et-xmlfile (from openpyxl)Downloading et_xmlfile-2.0.0-py3-none-any.whl.metadata (2.7 kB)
Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)
Installing collected packages: et-xmlfile, openpyxl
Successfully installed et-xmlfile-2.0.0 openpyxl-3.1.5

【13.3】读取Excel文档

【13.3.1】使用openpyxl模块打开excel文档

import openpyxl
from pathlib import Path# 使用openpyxl模块读取excel文件
wb = openpyxl.load_workbook(Path.cwd() / '1301-工作簿.xlsx')
print(type(wb))
# <class 'openpyxl.workbook.workbook.Workbook'>print(wb.sheetnames)
# ['Sheet1', 'Sheet2', 'Sheet3']sheet1 = wb['Sheet1']
print(sheet1['A1'].value)
# id

【13.3.2】从工作簿取得工作表

1)python使用Worksheet抽象工作表

sheet1 = wb['Sheet1']
print(sheet1['A1'].value)
# id

【13.3.3】从工作表sheet获取单元格cell

# 打印行列坐标及值
cell = sheet1['A1']
print(f'[%s][%s] = %s' % (cell.row, cell.column, cell.value))
# [1][1] = id# 通过数字定位行列坐标(从1开始计数)
for i in range(1, 5):for j in range(1, 4):cell = sheet1.cell(i, j)print(f'[%s][%s] = %s' % (cell.row, cell.column, cell.value), end='  ')print()
# [1][1] = id  [1][2] = name  [1][3] = addr
# [2][1] = 1  [2][2] = 张三01  [2][3] = 成都01
# [3][1] = 2  [3][2] = 张三02  [3][3] = 成都02
# [4][1] = 3  [4][2] = 张三03  [4][3] = 成都03

【13.3.5】从表中获取行和列

1)可以把Worksheet切片,取得表格中一行,一列或一个矩形区域中的所有单元格;

wb = openpyxl.load_workbook(Path.cwd() / '1301-工作簿.xlsx')
sheet1 = wb['Sheet1']
sheetTuple = tuple(sheet1['A1':'A3'])
print(sheetTuple)
# ((<Cell 'Sheet1'.A1>,), (<Cell 'Sheet1'.A2>,), (<Cell 'Sheet1'.A3>,))# 获取行与列的单元格
print("====== 从表中获取行和列 ======")
for rowOfCellObjects in sheet1:for cell in rowOfCellObjects:print(cell.coordinate, cell.value, end=' ')print()
# ====== 从表中获取行和列 ======
# A1 id B1 name C1 addr
# A2 1 B2 张三01 C2 成都01
# A3 2 B3 张三02 C3 成都02
# A4 3 B4 张三03 C4 成都03

2)获取整列或整行

# 获取整行
print("\n======= 获取整行 =======")
rowList = list(sheet1.rows)
# rowList = [(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
# , (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>)
# , (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>)
# , (<Cell 'Sheet1'.A4>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>)]
print("rowList = " + str(rowList))
for rowObject in rowList:for cellObject in rowObject:print(f'%s = %s ' % (cellObject.coordinate, cellObject.value), end=' ')print()
# A1 = id  B1 = name  C1 = addr
# A2 = 1  B2 = 张三01  C2 = 成都01
# A3 = 2  B3 = 张三02  C3 = 成都02
# A4 = 3  B4 = 张三03  C4 = 成都03

【13.3.6】工作簿、工作表、单元格复习

1)从工作簿读取单元格涉及的所有函数,方法和数据类型;

  • 导入openpyxl模块
  • 调用 openpyxl.load_workbook()函数;
  • 取得Workbook对象; 抽象工作簿;
  • 使用active或sheetnames属性;
    • 使用Workbook对象的active属性获取工作簿的活动表;
  • 取得Worksheet对象;抽象工作表(一个工作簿包含多个工作表)
  • 使用索引或工作表的cell方法,带上row和col坐标;
  • 获取Cell对象;访问Cell.value属性;


【13.5】写入Excel文档

【13.5.1】创建并保存Excel文档

import openpyxl
from pathlib import Pathwb = openpyxl.Workbook()
# 使用Workbook对象的active属性获取工作簿的活动表
sheet01 = wb.active
print(sheet01.title) # Sheet
sheet01.title = 'PythonWriteSheet01'
print(wb.sheetnames) # ['PythonWriteSheet01']
# 保存到xlsx文档
result = wb.save(Path.cwd() / '1305-01工作簿.xlsx')

【13.5.2】创建和删除工作表

1)调用 create_sheet() 和 del操作符 用于创建和删除工作表 ;

  • 注意是工作表,而不是工作簿;一个工作簿可以包含多个工作表;
## 创建和删除工作表
wb = openpyxl.Workbook()
# 创建工作表
wb.create_sheet("PythonWriteSheet10")
print(wb.sheetnames)
# ['Sheet', 'PythonWriteSheet02']# 创建工作表
wb.create_sheet(index=0, title="PythonWriteSheet00")
wb.create_sheet(index=1, title="PythonWriteSheet01")
wb.create_sheet(index=2, title="PythonWriteSheet02")
wb.create_sheet(index=3, title="PythonWriteSheet03")
print(wb.sheetnames)
# ['PythonWriteSheet00', 'PythonWriteSheet01', 'PythonWriteSheet02', 'PythonWriteSheet03', 'Sheet', 'PythonWriteSheet10']# 删除工作表
del wb['PythonWriteSheet10']
print(wb.sheetnames)
# ['PythonWriteSheet00', 'PythonWriteSheet01', 'PythonWriteSheet02', 'PythonWriteSheet03', 'Sheet']# 保存excel文件到磁盘
wb.save(Path.cwd() / '1305-02工作簿.xlsx')
wb.close()

【13.5.3】把值写入单元格

# 把值写入单元格
wb = openpyxl.Workbook()
# 创建工作表
wb.create_sheet("PythonWriteSheetA01")
sheetA01 = wb["PythonWriteSheetA01"]
sheetA01.cell(1, 1, "值1-1")
sheetA01.cell(1, 2, "值1-2")
sheetA01.cell(2, 1, "值2-1")
sheetA01.cell(2, 2, "值2-2")
wb.save(Path.cwd() / '1305-工作簿A01.xlsx')
wb.close()


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABS函数c++

简介&#xff1a; abs 函数用于计算一个数的绝对值&#xff0c;在 C 中它继承自 C 语言的标准库&#xff0c;其历史可以追溯到早期的 C 语言发展历程&#xff0c;以下是详细介绍&#xff1a; 早期编程语言的需求 在计算机编程的早期阶段&#xff0c;处理数学运算就是一项基本…

闭环SOTA!北航DiffAD:基于扩散模型实现端到端自动驾驶「多任务闭环统一」

端到端自动驾驶目前是有望实现完全自动驾驶的一条有前景的途径。然而&#xff0c;现有的端到端自动驾驶系统通常采用主干网络与多任务头结合的方式&#xff0c;但是它们存在任务协调和系统复杂度高的问题。为此&#xff0c;本文提出了DiffAD&#xff0c;它统一了各种驾驶目标并…

整车CAN网络和CANoe

车载网络中主要包含有Can网络,Lin网络,FlexRay,Most,以太网。 500kbps:500波特率,表示的数据传输的速度。表示的是最大的网速传输速度。也就是每秒 500kb BodyCan车身Can InfoCan娱乐信息Can 车身CAN主要连接的是ESB电动安全带 ADB自适应远光灯等 PTCan动力Can 底盘Can

实战设计模式之迭代器模式

概述 与上一篇介绍的解释器模式一样&#xff0c;迭代器模式也是一种行为设计模式。它提供了一种方法来顺序访问一个聚合对象中的各个元素&#xff0c;而无需暴露该对象的内部表示。简而言之&#xff0c;迭代器模式允许我们遍历集合数据结构中的元素&#xff0c;而不必了解这些集…

JVM 垃圾回收器是如何判断一个对象是否要回收?

JVM 垃圾回收器&#xff08;Garbage Collector&#xff09;需要判断哪些对象是“垃圾”&#xff0c;即不再被程序使用的对象&#xff0c;以便回收它们占用的内存。JVM 主要使用以下两种方法来判断对象是否是垃圾&#xff1a; 1. 引用计数算法 (Reference Counting): 原理&…

kali——httrack

目录 前言 使用教程 前言 HTTrack 是一款运行于 Kali Linux 系统中的开源网站镜像工具&#xff0c;它能将网站的页面、图片、链接等资源完整地下载到本地&#xff0c;构建出一个和原网站结构相似的离线副本。 使用教程 apt install httrack //安装httrack工具 httrac…

kotlin函数类型

一 函数类型定义 1 定义 函数类型就是 (Int, Int) -> Int 函数类型其实就是将函数的 “参数类型” 和 “返回值类型” 抽象出来 2 示例 &#xff1a; (Int, Int) -> Int 表示接收两个 Int 参数并返回 Int 的函数类型&#xff1b; (String) -> Unit 表示接收 Strin…

C# Winform 入门(9)之如何封装并调用dll

封装dll 首先创建 .Net平台 类库 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _09.Encapsulation_dll {public class Program{/// <summary>/// 求两个double类型的数值的和/// &l…

前后端分离下,Spring Boot 请求从发起到响应的完整执行流程

以下是前后端分离架构下&#xff0c;Spring Boot 请求从发起到响应的完整执行流程&#xff0c;结合你提出的所有问题&#xff0c;按真实执行顺序和职责链条重新整理所有核心概念、结构、关键类、数据转换点和典型代码示例&#xff1a; 一、前端发起请求&#xff08;步骤1-2&…

基于sklearn实现文本摘要思考

和各位小伙伴分享一下使用sklearn进行文本摘要的思考。 第一版本 原理 提取式文本摘要的基本原理是&#xff1a; 将文本分割成句子 计算每个句子的重要性(权重) 选择权重最高的几个句子组成摘要 常用的句子权重计算方法&#xff1a; TF-IDF&#xff1a;基于词频-逆文档频…

OpenHarmony子系统开发 - DFX(三)

OpenHarmony子系统开发 - DFX&#xff08;三&#xff09; 五、HiTraceMeter开发指导 HiTraceMeter概述 简介 HiTraceMeter在OpenHarmony中&#xff0c;为开发者提供业务流程调用链跟踪的维测接口。通过使用该接口所提供的功能&#xff0c;可以帮助开发者迅速获取指定业务流…

2025年 能够有效提升AI的生成质量和逻辑严谨性 的通用型系统提示

以下是三个经过精心设计的通用型系统提示&#xff08;System Prompt&#xff09;&#xff0c;能够有效提升AI的生成质量和逻辑严谨性&#xff0c;适用于各类对话、分析和创作场景&#xff1a; Prompt 1 - 专家级分步验证模式 你是一个具备跨领域知识整合能力的超级AI&#xff…

python爬虫:小程序逆向实战教程

根据我之前发表的文章&#xff0c;我们进行延伸实战https://blog.csdn.net/weixin_64809364/article/details/146981598?spm1001.2014.3001.5501 1. 想要爬取什么小程序&#xff0c;我们进行搜索 2. 找到我们vx小程序的文件地址&#xff0c;我们就可以进行破解 破解步骤强看…

C语言变长数组(VLA)详解:灵活处理动态数据的利器

引言 在C语言中&#xff0c;传统的数组大小必须在编译时确定&#xff0c;这限制了程序处理动态数据的灵活性。C99标准引入的变长数组&#xff08;Variable-Length Array, VLA&#xff09; 打破了这一限制&#xff0c;允许数组长度在运行时动态确定。本文将深入解析VLA的语法、…

串口数据转换为IP数据

串口数据转换为IP数据是一种常见的通信技术,用于将传统的串行设备(如传感器、控制器等)接入现代的IP网络。以下是详细介绍: 1. 转换原理 串口数据转换为IP数据的过程涉及硬件和软件的结合,核心是将串行数据封装为TCP/IP或UDP/IP数据包,通过网络传输。具体步骤如下: 硬…

client-go如何监听自定义资源

如何使用 client-go 监听自定义资源 在 Kubernetes 中使用 client-go 监听自定义资源&#xff08;Custom Resource&#xff0c;简称 CR&#xff09;需要借助 Dynamic Client 或 Custom Informer&#xff0c;因为 client-go 的标准 Clientset 只支持内置资源&#xff08;如 Pod…

C++软件开发架构

文章目录 1.全局消息通信MsgHandler.h单元测试(QTest)MsgHandlerUnitTest.hMsgHandlerUnitTest.cpp 2.实例间通信InstMsgHandler.h单元测试InstMsgHandlerUnitTest.hInstMsgHandlerUnitTest.cpp 1.全局消息通信 1. 适用于类与类单个对象实例之间的通信&#xff0c;多个对象需要…

AI Agent设计模式一:Chain

概念 &#xff1a;线性任务流设计 ✅ 优点&#xff1a;逻辑清晰易调试&#xff0c;适合线性处理流程❌ 缺点&#xff1a;缺乏动态分支能力 from typing import TypedDictfrom langgraph.graph import StateGraph, END# 定义后续用到的一些变量 class CustomState(TypedDict):p…

Git三剑客:工作区、暂存区、版本库深度解析

一、引言&#xff1a;为什么需要理解Git的核心区域&#xff1f; 作为开发者&#xff0c;Git是日常必备的版本控制工具。但你是否曾因以下问题感到困惑&#xff1f; 修改了文件&#xff0c;但 git status 显示一片混乱&#xff1f; git add 和 git commit 到底做了什么&#x…

Python数据类型-list

列表(List)是Python中最常用的数据类型之一&#xff0c;它是一个有序、可变的元素集合。 1. 列表基础 创建列表 empty_list [] # 空列表 numbers [1, 2, 3, 4, 5] # 数字列表 fruits [apple, banana, orange] # 字符串列表 mixed [1, hello, 3.14, True] # 混合类型…