IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 文件处理(二):Excel相关的操作汇总 之 数据查询 -> 正文阅读

[Python知识库]python 文件处理(二):Excel相关的操作汇总 之 数据查询

Excel简介? ? ??

??????????要讲Excel的相关操作,首先我们要对Excel文件有个基本的了解。我们打开Excel进行编辑时会发现一个Excel文件下面会有很多个sheet供我们选择,如图所示:

?????????红色圈起来的地方就是我们实际数据输入的地方,叫做worksheet(工作表),而我们可以看到黄色圈起来的地方,也就是Excel文件的文件名是工作簿(workbook)。由此我们可以总结:一个workbook是由一个或多个worksheet组成的,因此在后面对Excel文件进行操作的时候,需要格外注意操作的对象是workbook还是worksheetworkbook和worksheet以及后面会讲到的单元格等等都是以对象的形式出现的。当我们获取了workbook,worksheet的时候,我们只需要将他们想象成一个个实例化的对象,会好理解一些。

? ? ? ? 注意,python对Excel进行操作时,要引用一个名为openpyxl的包,请提前下载哦(在cmd窗口输入 pip install openpyxl,如果不行的话百度一下,网上讲的很详细的)。

一、打开Excel工作簿和工作表

? ? ? ? 了解了Excel的基本结构之后,我们就要开始操作了。首先,打开工作簿:

openpyxl.load_workbook(file_path)?

(file_path假如和工作目录一样则直接写文件名,假如不一样,则写文件名的绝对路径,或将工作目录改为和文件相同)【注意,此函数读取的是工作簿,不是工作表!!】

当单元格中含有公式的时候,要加上data_only = True, 就像这样:openpyxl.load_workbook(file_path,data_only = True). 具体原因往下看,讲 二、单元格操作 的时候会讲到。

????????读取了workbook之后,我们需要知道workbook中含有哪些worksheet。workbook对象有一个名叫sheetnames的属性,使用sheetnames这个属性就可以获得workbook中的所有worksheet的名字,输出的是一个数组列表。需要注意的是,sheetnames不是函数,是属性名,所以调用它的时候不要像调用函数那样加括号!!
? ? ?

????????打开了工作簿,下一步就是获取具体的工作表:

wb[worksheet_name]

此处用wb表示上一步获取的workbook。

? 如果难理解的话,看了下面的例子就懂了

import os
import shutil
import openpyxl

os.chdir("D:\Python Code\阿巴阿巴") #改变工作目录到文件所在地址
wb = openpyxl.load_workbook("游戏.xlsx") #获取名为游戏的workbook
ws_name = wb.sheetnames  
print(ws_name)
ws_HPJY = wb["和平精英"] #获取名为和平精英的worksheet
print("worksheet和平精英已获取")

输出结果:

二、单元格的查询

????????2.1对单个单元格的查询

? ? ? ? 获取了具体的worksheet,下一步就是对单元格的操作了。每个单元格对象其实也可以看做是worksheet自己的一个数据成员,只不过这个成员本身也是一个对象。因此, 我们获取到的一个单元格包含了两个重要的成员:key 和 value,也就是常说的 键——值 的格式。

? ? ? ? 单元格的key(键)就是正常使用表格时常数的几行几列的形式,如“C5”(C列5行),"E8"(E列8行)这样的字符串。那么怎么通过key值找到value呢,看下面这个例子就行。(同时,里面也提到了在上面讲获取workbook有时候要加data_only = True的原因。)

获取的表格如下,其中C6的2是使用公式A6+B6算出来的:

import os
import openpyxl

os.chdir("D:\Python Code\阿巴阿巴")
wb = openpyxl.load_workbook("游戏.xlsx")
ws_name = wb.sheetnames
print(ws_name)
ws_HPJY = wb["和平精英"]


bulletAKM_cell = ws_HPJY["B2"]
bulletAKM = ws_HPJY["B2"].value
value_1 = ws_HPJY["C6"].value
print(bulletAKM_cell) ############输出  <Cell '和平精英'.B2>
print(bulletAKM) #################输出7.62
print(value_1) ###################输出 =A6+B6


wb = openpyxl.load_workbook("游戏.xlsx", data_only=True)
ws_HPJY = wb["和平精英"]
value_2 = ws_HPJY["C6"].value
print(value_2)  ##################输出 2

? ? ? ? 注意:可以看到,在不添加data_only=True 的时候,直接输出含有公式的单元格的value只会输出公式。只有添加了data_only=True的时候才能正确输出想要的值。

????????2.2对单元格按行查询

????????worksheet对象本身还带有raws这个成员,ws.rows可以获得worksheet所有的行(ws代指worksheet),每一行为一个元组。

????????具体操作方式参考下面这个例子。值得注意的是,在获取每行第一个单元格的内容的时候,我们用的是raw[0].value 语句,而不是 raw['A'].value。为什么呢? 上面提过,由于for循环获得的每个raw其实是元组形式,所以获取元组里的信息当然是用数字啦。不过我们在实际操作中,表格不会只有这么一点点,往往会有很多列。观察表格会发现,第一行, A1-Z1结束后,接下来是AA1,BB1...,直接判断列号比较难,所以会用到

openpyxl.utils.cell.column_index_from_string()函数,

作用就是将表格中的列号ABCD转换为对应的数字1,2,3,4,不过元组的索引号是从0开始的,因此实际应用数据时我们要减一。

import os
import openpyxl

os.chdir("D:\Python Code\阿巴阿巴")
wb = openpyxl.load_workbook("游戏.xlsx", data_only=True)
ws_HPJY = wb["和平精英"]

for raw in ws_HPJY.rows:
    print(raw)          ##########输出每一行的行对象

for raw in ws_HPJY.rows:
    print(raw[0].value)     ####获取每一行的第一个单元格的内容(也就是第一列 A列 的内容)
                            #########别忘了value哦!!!!!!!!!

print("--------------分割线-----------")                            
for raw in ws_HPJY.rows:                     ###########记得减一!!!
    print(raw[openpyxl.utils.cell.column_index_from_string('A')-1].value)
                      ##########列值的转换,输出结果其实是一样的。
                

输出结果:

OK,今天的Excel的数据查询就讲到这里,下一节我们会讲如何创建一个新的workbook,以及将数据录入其中。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 12:59:47  更:2021-12-03 13:00:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:42:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码