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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
Python脚本实现网卡流量监控
Feb 14 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
django实现用户登陆功能详解
Dec 11 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
python 调试冷知识(小结)
Nov 11 Python
opencv3/C++图像像素操作详解
Dec 10 Python
tensorflow指定CPU与GPU运算的方法实现
Apr 21 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 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
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
asp批量修改记录的代码
2008/06/25 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
详解在Python程序中自定义异常的方法
2015/10/16 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
pyqt5实现登录界面的模板
2020/05/30 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
倩碧英国官网:Clinique英国
2018/08/10 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
实习自我评价怎么写
2013/12/02 职场文书
前台文员我鉴定
2014/01/12 职场文书
法人代表任命书范本
2014/06/05 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
稽核岗位职责范本
2015/04/13 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL