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之折腾一下目录
Oct 24 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
python算法演练_One Rule 算法(详解)
May 17 Python
Python将多个list合并为1个list的方法
Jun 27 Python
python如何实现一个刷网页小程序
Nov 27 Python
Django REST framework视图的用法
Jan 16 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
python使用opencv在Windows下调用摄像头实现解析
Nov 26 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Python使用jpype模块调用jar包过程解析
Jul 29 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
简单采集了yahoo的一些数据
2007/02/14 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
解析PHP的session过期设置
2013/06/29 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
php实现每日签到功能
2018/11/29 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
js jquery数组介绍
2012/07/15 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
深入理解javascript中的this
2021/02/08 Javascript
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
python自动发微信监控报警
2019/09/06 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
Python远程方法调用实现过程解析
2020/07/28 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
运动会广播稿150字(9篇)
2014/09/20 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers