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中运算符使用时的优先级
May 14 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
Python random模块用法解析及简单示例
Dec 18 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
Python中的函数作用域
May 07 Python
python实现机器学习之元线性回归
Sep 06 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
Python实现双向链表基本操作
May 25 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实现数组按拼音顺序排序的方法
2017/05/03 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
python发送HTTP请求的方法小结
2015/07/08 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
python实现同一局域网下传输图片
2020/03/20 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
Python 里最强的地图绘制神器
2021/03/01 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
阿巴庭院:Abba Patio
2019/06/18 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
毕业生文员求职信
2013/11/03 职场文书
茶叶生产计划书
2014/01/10 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
教研处工作方案
2014/05/26 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
MySQL分库分表详情
2021/09/25 MySQL
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫