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中集合类型(set)学习小结
Jan 28 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
Python中encode()方法的使用简介
May 18 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
Python读取txt某几列绘图的方法
Oct 14 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
Django url 路由匹配过程详解
Jan 22 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
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
python实现电子词典
2020/04/23 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
python http基本验证方法
2018/12/26 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
二年级学生评语大全
2014/04/23 职场文书
结婚保证书范文
2014/04/29 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
详解Laravel框架的依赖注入功能
2021/05/27 PHP