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实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
python后端接收前端回传的文件方法
Jan 02 Python
Python字典遍历操作实例小结
Mar 05 Python
使用python实现回文数的四种方法小结
Nov 24 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
django的autoreload机制实现
Jun 03 Python
Python实现播放和录制声音的功能
Aug 12 Python
python 6行代码制作月历生成器
Sep 18 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
新手如何快速理解js异步编程
2019/06/24 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
python flask实现分页效果
2017/06/27 Python
pandas的qcut()方法详解
2019/07/06 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
办公室主任职责范文
2013/11/08 职场文书
2016国培学习心得体会
2016/01/08 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS