python之openpyxl模块的安装和基本用法(excel管理)


Posted in Python onFebruary 03, 2021

前言

openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。
要对excel进行操作,必须要有能打开excel的软件,这里以wps为例

一.获取wps的安装包并安装

python之openpyxl模块的安装和基本用法(excel管理)

二.excel文档的基本定义

1) 工作薄(workbook):一个EXCEL文件就称为一个工作薄,一个工作薄中可以包含若干张工作表。

2) 工作表(sheet):工作薄中的每一张表格称为工作表,每张工作表都有一个标签,默认为sheet1\sheet2\sheet3来命名,(一个工作 薄默认为由3个工作表组成)

3) 活动表(active sheet):指当前正在操作的工作表

4) 行(row): 工作表中的每一行行首数字(1、2、3、)称为行标题;一张工作表最多有65536行

5) 列(column): 列标题:工作表中每一列列首的字母(A、B、C)称为列标题;一张工作表最多有256列

6)单元格(cell): 工作表的每一个格称为单元格

三.导入openpyxl模块

在pycharm下,执行import openpyxl,发现会报错,这时我们将鼠标放在openpyxl上,按下alt + enter,选择第一个进行安装。

python之openpyxl模块的安装和基本用法(excel管理) 

出现下图,说明安装成功。

python之openpyxl模块的安装和基本用法(excel管理) 

如果安装失败,就需要到第三方库进行安装。

pip3 install openpyx

四.openpyxl基本用法

1.创建对象

打开或者创建一个Excel需要创建一个Workbook对象

获取一个表则需要先创建一个Workbook对象,然后使用该对象的方法来得到一个Worksheet对象

如果要获取表中的数据,那么得到Worksheet对象以后再从中获取代表单元格的Cell对象

Workbook对象

一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。对于创建一个新的Excel文档,直接进行Workbook类的调用即可,对于一个已经存在的Excel文档,可以使用openpyxl模块的load_workbook函数进行读取,该函数包涵多个参数,但只有filename参数为必传参数。filename 是一个文件名,也可以是一个打开的文件对象

import openpyxl
wb = openpyxl.Workbook('Book1.xlsx')
wb1 = openpyxl.load_workbook('Book2.xlsx')

print(wb)
print(type(wb))
print(wb1)
print(type(wb1))

python之openpyxl模块的安装和基本用法(excel管理)

2.Workbook对象属性(工作簿操作)

sheetnames:获取工作簿中的表(列表)

active:获取当前活跃的Worksheet

worksheets:以列表的形式返回所有的Worksheet(表格)

read_only:判断是否以read_only模式打开Excel文档

encoding:获取文档的字符集编码

properties:获取文档的元数据,如标题,创建者,创建日期等

import openpyxl

wb = openpyxl.load_workbook('Book2.xlsx')
print(wb.sheetnames)
print(wb.active)
print(wb.worksheets)
print(wb.read_only)
print(wb.encoding)
print(wb.properties) ##运行结果最后三行属于该属性

excel信息

python之openpyxl模块的安装和基本用法(excel管理) 

运行结果

python之openpyxl模块的安装和基本用法(excel管理)

3.Worksheet,Cell对象(工作表操作,单元格)

Worksheet:

title:表格的标题

max_row:表格的最大行

min_row:表格的最小行

max_column:表格的最大列

min_column:表格的最小列

rows:按行获取单元格(Cell对象) - 生成器

columns:按列获取单元格(Cell对象) - 生成器

values:按行获取表格的内容(数据) - 生成器

Cell:

row:单元格所在的行

column:单元格坐在的列

value:单元格的值

coordinate:单元格的坐标

import openpyxl

wb = openpyxl.load_workbook('Book2.xlsx')
##选择要操作的工作表, 返回工作表对象
sheet = wb['排序商品信息']
#获取工作表的名称
print(sheet.title)
# 获取工作表中行和列的最值
print(sheet.max_column)
print(sheet.max_row)
print(sheet.min_column)
print(sheet.min_row)
##修改表的名称
sheet.title = 'sheet1'
print(sheet.title)
# 返回指定行指定列的单元格信息
print(sheet.cell(row=1, column=2).value)
cell = sheet['B1']
print(cell)
print(cell.row, cell.column, cell.value,cell.coordinate)

运行前excel信息

python之openpyxl模块的安装和基本用法(excel管理) 

python之openpyxl模块的安装和基本用法(excel管理)

4.访问单元格的所有信息

import openpyxl

wb = openpyxl.load_workbook('Book2.xlsx')
##选择要操作的工作表, 返回工作表对象
sheet = wb['排序商品信息']
for row in sheet.rows:
 # 循环遍历每一个单元格
 for cell in row:
 # 获取单元格的内容
 print(cell.value, end=',')
 print()

python之openpyxl模块的安装和基本用法(excel管理)

import openpyxl

wb = openpyxl.load_workbook('Book2.xlsx')
##选择要操作的工作表, 返回工作表对象
sheet = wb['排序商品信息']
for row in sheet.values:
 print(*row)

python之openpyxl模块的安装和基本用法(excel管理)

5.应用案例

需求:

商品名称 商品价格 商品数量

- 定义一个函数, readwb(wbname, sheetname=None)

- 如果用户指定sheetname就打开用户指定的工作表, 如果没有指定, 打开active sheet;

- 根据商品的价格进行排序(由小到大), 保存到文件中;商品名称:商品价格:商品数量

- 所有信息, 并将其保存到数据库中;

import os

import openpyxl


def readwb(wbname, sheetname=None):
 # 打开工作薄
 wb = openpyxl.load_workbook(wbname)
 # 获取要操作的工作表
 if not sheetname:
  sheet = wb.active
 else:
  sheet = wb[sheetname]

 # 获取商品信息保存到列表中
 #[ ['name', price, count]
 #
 # ]
 all_info = []
 for row in sheet.rows:
  child = [cell.value for cell in row]
  all_info.append(child)
 return sorted(all_info, key=lambda item: item[1])


def save_to_excel(data, wbname, sheetname='sheet1'):
 """
 将信息保存到excel表中;
 [[' BOOK', 50, 3], ['APPLE', 100, 1], ['BANANA', 200, 0.5]]
 """
 print("写入Excel[%s]中......." %(wbname))
 # 打开excel表, 如果文件不存在, 自己实例化一个WorkBook对象
 wb = openpyxl.Workbook()
 # 修改当前工作表的名称
 sheet = wb.active
 # 修改工作表的名称
 sheet.title = sheetname

 for row, item in enumerate(data): # 0 [' BOOK', 50, 3]
  for column, cellValue in enumerate(item): # 0 ' BOOK'
   sheet.cell(row=row+1, column=column+1, value=cellValue)

 # ** 往单元格写入内容
 # sheet.cell['B1'].value = "value"
 # sheet.cell(row=1, column=2, value="value")

 # 保存写入的信息
 wb.save(filename=wbname)
 print("写入成功!")

data = readwb(wbname='Book1.xlsx')
save_to_excel(data, wbname='Book2.xlsx', sheetname="排序商品信息")

原excel信息

python之openpyxl模块的安装和基本用法(excel管理) 

新excel信息

python之openpyxl模块的安装和基本用法(excel管理)

总结

到此这篇关于python之openpyxl模块的安装和基本用法的文章就介绍到这了,更多相关python openpyxl模块(excel管理)内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中将字典转换成其json字符串
Jul 16 Python
Python编程之多态用法实例详解
May 19 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
python retrying模块的使用方法详解
Sep 25 Python
python编写猜数字小游戏
Oct 06 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
python中time.ctime()实例用法
Feb 03 #Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 #Python
利用Python过滤相似文本的简单方法示例
Feb 03 #Python
python time.strptime格式化实例详解
Feb 03 #Python
Python字符串的15个基本操作(小结)
Feb 03 #Python
python调用百度AI接口实现人流量统计
Feb 03 #Python
在python3.9下如何安装scrapy的方法
Feb 03 #Python
You might like
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
益模软件Java笔试题
2012/03/27 面试题
什么是数据抽象
2016/11/26 面试题
翻译专业应届生求职信
2013/11/23 职场文书
应届毕业生求职信范文分享
2013/12/26 职场文书
大学生职业生涯设计书
2014/01/02 职场文书
爷爷追悼会答谢词
2014/01/24 职场文书
简历中自我评价范文
2015/03/11 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python