python操作excel的方法


Posted in Python onAugust 16, 2018

摘要:

Openpyxl是一个常用的python库,用于对Excel的常用格式及其模板进行数据读写等操作。

简介与安装openpyxl库

Openpyxl is a Python library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files.

安装

pip install openpyxl

pillow:在文件中需要使用images (jpeg, png, bmp,...)时,需要安装pillow库。

注意:写操作时请关闭需要操作的excel文件,否则写不成功

加载xlsx操作内容

加载外部excel的xlsx步骤:

加载xlsx文件,获得该文件的句柄,为workbook

from openpyxl import load_workbook
wb2 = load_workbook('test.xlsx')
print wb2.get_sheet_names()
# ['Sheet2', 'New Title', 'Sheet1']

在内存中新建workbook

创建 workbook

开始使用openpyxl,没有必要在文件系统上创建一个文件。

只需要导入Workbook类并开始使用它。可以把wordbook想象成一个excel文件。

from openpyxl import Workbook
wb = Workbook()
workbook创建后至少至少要创建一个worksheet。使用 openpyxl.workbook.Workbook.active()
ws = wb.active

该方法使用了_active_sheet_index属性, 默认会设置0

创建worksheet

使用 openpyxl.workbook.Workbook.create_sheet() 创建新的worksheet

ws1 = wb.create_sheet("new_sheet_1") # 新建sheet,插入到最后(默认)
ws2 = wb.create_sheet("new_sheet_2", 0) # 插入到最开始的位置

指定worksheet的名称

不指定sheet名称时,按照sheet,sheet1,sheet2自动增长

ws3 = wb.create_sheet()

自定义worksheet名称,通过title属性指定名称,设置了sheet的名称

ws3.title = "new_sheet_3"

输出wb现在所有的sheetname查看

通过 openpyxl.workbook.Workbook.sheetnames() 输出wb现在所有的sheetname

print wb.get_sheet_names()
print(wb.sheetnames)

循环

for sheet in wb:
print(sheet.title)

指定worksheet tab按钮的颜色

新建的sheet tab颜色为白色,可以另外指定sheet tab按钮的颜色

ws3.sheet_properties.tabColor = "1072BA"

激活某个worksheet

通过worksheet名称激活某个sheet使用

名称看成workbook中的一个key

ws3 = wb["new_sheet_3"]

通过 _active_sheet_index 激活某个sheet使用

wb._active_sheet_index = 1 # 获取第二个sheet

创建worksheet副本

使用 openpyxl.workbook.Workbook.copy_worksheet() 创建worksheet副本

source = wb.active
target = wb.copy_worksheet(source)

只能复制cell和style。不能复制工作表之间的工作簿。

操作单元格

当worksheet在内存中被创建时,是没有包含cells的,cells是在首次访问时创建

单元格可以看作是worksheet的key,通过key去访问单元格中的数据

c = ws['A3'] # 访问单元格,不存在则会自动创建一个
print c.value
ws['A4'] = 'a4 value' # 指定单元格的值
print ws['A4'].value
d = ws.cell(row=4, column=2, value='通过cell指定') # 通过row column数字指定
print d.value

循环在内存中创建cells

不用指定其值也可以在内存中创建

for i in range(1, 10):
for j in range(1, 10):
ws.cell(row=i, column=j)

通过切片Ranges指定许多cells

cell_range = ws['A1':'C2']

也可以Ranges rows 或者columns

print ws['C']
print ws['C:D']
print ws[10]
print ws[5:10]

也可以使用iter_rows() 指定行->行,截止列

for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
for c in row:
print(c)
iter_cols() 指定列->列,截止行
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
for c in row:
print(c)

遍历所有文件的行或列

ws['C9'] = 'hello world'
tuple(ws.rows) # 转化成tuple方便for in操作
tuple(ws.columns)

保存文件

wb = Workbook()
wb.save("assets/sample.xlsx")

此操作将覆盖现有的文件没有警告。

所有的操作都需要保存到excel才能看见

保存为模板

指定属性 as_template=True ,就可以将文档保存为模板.xltx

wb = load_workbook('document.xlsx')
wb.template = True
wb.save('document_template.xltx')

或者将该属性设置为False(默认),另存为一个文档:

wb = load_workbook('document_template.xltx')
wb.template = False
wb.save('document.xlsx', as_template=False)

使用公式

wb = load\_workbook\('assets/sample.xlsx'\)
ws = wb.active
ws\["A5"\] = "=SUM\(2, 1\)"
wb.save\("assets/sample.xlsx"\)

总结

以上所述是小编给大家介绍的python操作excel的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python+Opencv识别两张相似图片
Mar 23 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
python决策树之CART分类回归树详解
Dec 20 Python
python如何实现一个刷网页小程序
Nov 27 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
Python tkinter模版代码实例
Feb 05 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
Python 语言实现六大查找算法
Jun 30 Python
python_tkinter事件类型详情
Mar 20 Python
python3调用百度翻译API实现实时翻译
Aug 16 #Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 #Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 #Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 #Python
Python使用pickle模块储存对象操作示例
Aug 15 #Python
Linux下多个Python版本安装教程
Aug 15 #Python
Python并发之多进程的方法实例代码
Aug 15 #Python
You might like
Windows下的PHP5.0详解
2006/11/18 PHP
php SQL之where语句生成器
2009/03/24 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
python简单猜数游戏实例
2015/07/09 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
Python 中Operator模块的使用
2021/01/30 Python
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
客服实习的个人自我鉴定
2013/10/20 职场文书
公司应聘自荐书
2014/06/14 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
实用求职信模板范文
2019/05/13 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
python小程序之飘落的银杏
2021/04/17 Python
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB
Python 中的Sympy详细使用
2021/08/07 Python
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL