您现在的位置是:网站首页> 编程资料编程资料
python实现处理Excel表格超详细系列_python_
2023-05-26
440人已围观
简介 python实现处理Excel表格超详细系列_python_
前言
- 一个Excel电子表格文档称为一个工作簿
- 一个工作簿保存在一个扩展名为.xlsx的文件中
- 一个工作簿可以包含多个表
- 用户当前查看的表(或关闭Excel前最后查看的表)称为活动表
- 在特定行和列的方格称为单元格、格子

处理Excel表格需要用到openpyxl模块,该模块需要手动安装
pip install openpyxl
xls和xlsx
简单来说:
xls是excel2003及以前版本所生成的文件格式
xlsx是excel2007及以后版本所生成的文件格式
(excel 2007之后版本可以打开上述两种格式,但是excel2013只能打开xls格式)
excel后缀.xls和.xlsx有什么区别
文件核心结构不同:
xls核心结构是复合文档类型的;
xlsx 的核心结构是 XML 类型的结构,并且基于XML进行压缩(占用空间更小),所以也可以看做zip文件,将一个“.xlsx”文件的后缀改为ZIP后,用解压软件解压,可以看到里面有一个xml文件和文件的主要内容。

版本不同:
- xls是excel2003及以前版本所生成的文件格式
- xlsx是excel2007及以后版本所生成的文件格式
(excel 2007之后版本可以打开上述两种格式,但是excel2013只能打开xls格式)

最大行列得数量不同:
- xls最大只有65536行、256列
- xlsx可以有1048576行、16384列
二者转换问题:
任何能够打开“.xlsx”文件的文字处理软件都可以将该文档另存为“.xls”文件

- 如果要将xlsx格式的文件转换为.xls格式的一定要注意将文件转换为xls格式之后只保存256列,其余的列都会被删掉
基本操作
用到的test.xlsx表格
在这里插入图片描述
1:用openpyxl模块打开Excel文档,查看所有sheet表
openpyxl.load_workbook()函数接受文件名,返回一个workbook数据类型的值。这个workbook对象代表这个Excel文件,这个有点类似File对象代表一个打开的文本文件。
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 print(workbook.sheetnames) # 打印Excel表中的所有表 # 结果: # ['Sheet1', 'Sheet2']1.2:通过sheet名称获取表格
在第10行,使用workbook['Sheet1']获取指定sheet表
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 print(workbook.sheetnames) # 打印Excel表中的所有表 sheet = workbook['Sheet1'] # 获取指定sheet表 print(sheet) # 结果: # ['Sheet1', 'Sheet2'] # 1.2:获取活动表
使用workbook.active获取活动表
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook.active # 获取活动表 print(sheet) # 结果: # 2:获取表格的尺寸
这里所说的尺寸大小,指的是excel表格中的数据有几行几列,针对的是不同的sheet而言
使用sheet.dimensions获取表格的尺寸
下面打印的A1:B7是什么意思呢?

import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook['Sheet1'] # 获取指定sheet表 print(sheet.dimensions) # 获取表格的尺寸大小 # 结果: # A1:B72.1:获取单元格中的数据
方法1:指定坐标的方式
sheet[“A1”]
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook.active # 获取活动表 # print(sheet.dimensions) # 获取表格的尺寸大小 cell1 = sheet['A1'] # 获取A1单元格的数据 cell2 = sheet['B7'] # 获取B7单元格的数据 # cell2 = sheet['B7'].value # 另一种写法 # 正确示范 # cell1.value获取单元格A1中的值 # cell2.value获取单元格B7中的值 print(cell1.value,cell2.value) # 姓名 18 # 错误示范 print(cell1,cell2) # | | 方法2: 指定行列的方式
sheet.cell(row=, column=)方式
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook.active # 获取活动表 # print(sheet.dimensions) # 获取表格的尺寸大小 cell1 = sheet.cell(row=1,column=1) # 获取第1行第1列的数据 cell2 = sheet.cell(row=3,column=2) # 获取第3行第4的数据 # 正确示范 # cell1.value获取单元格A1中的值 # cell2.value获取单元格B7中的值 print(cell1.value,cell2.value) # 姓名 412.2:获取单元格的行、列、坐标
.row获取某个格子的行数;.columns获取某个格子的列数;.coordinate获取某个格子的坐标;
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook.active # 获取活动表 # print(sheet.dimensions) # 获取表格的尺寸大小 cell = sheet.cell(row=3, column=2) # 获取第3行第4的数据 print(cell.value, cell.row, cell.column, cell.coordinate) ''' 结果: 41 3 2 B3 '''3:获取区间内的数据
获取单行单列数据的时候,使用一层for循环;获取多行多列、指定区间的数据时,使用两层for循环
获取指定区间的数据:
- 使用
sheet['A1:A5']拿到指定区间 - 使用两个for循环拿到数据
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook.active # 获取活动表 print('当前活动表是:') print(sheet) cell = sheet['A1:A5'] # 获取A1到A5的数据 print(cell) # 打印A1到A5的数据 for i in cell: for j in i: print(j.value) # 结果: # 当前活动表是: # # ((,), (,), (,), (,), (| ,)) # 姓名 # 张三 # 李四 # 王五 # 赵六 | | | | | 获取指定行列的数据:
- sheet[“A”] — 获取A列的数据
- sheet[“A:C”] — 获取A,B,C三列的数据
- sheet[5] — 只获取第5行的数据
下面的代码,获取一列数据的时候,使用一层for循环
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook.active # 获取活动表 print('当前活动表是:' + str(sheet)) cell = sheet['2'] # 获取第2行的数据 # 打印A1到A5的数据 for i in cell: print(i.value) # 结果: # 当前活动表是: # 张三 # 74 下面代码,获取两列数据的时候,使用两层for循环。注意到,两列的结果打印到一起了,可读性较差
import os import openpyxl path = r"C:\Users\asuka\Desktop" os.chdir(path) # 修改工作路径 workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值 sheet = workbook.active # 获取活动表 print('当前活动表是:' + str(sheet)) cell = sheet['A:B'] # 获取AB列的数据 # 打印AB列数据 for i in cell: for j in i: print(j.value) # 结果: # 当前活动表是: # 姓名 # 张三 # 李四 # 王五 # 赵六 # alice # bob # 年龄 # 74 # 41 # 56 # 12 # 17 # 18 按行、列获取值:
iter_rows():按行读取提示: 本文由神整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- Pytorch linear 多维输入的参数问题_python_
- python列表倒序的几种方法(切片、reverse()、reversed())_python_
- python中列表添加元素的几种方式(+、append()、extend())_python_
- python正则表达式re.group()用法_python_
- 读Json文件生成pandas数据框详情_python_
- Python构建简单线性回归模型_python_
- Python NumPy教程之数组的基本操作详解_python_
- Python实现光速定位并提取两个文件的不同之处_python_
- VS2022安装Python开发环境的详细过程_python_
- python中第三方库pyecharts的使用详解_python_
