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实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
Python2和Python3的共存和切换使用
Apr 12 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
详解Python3 pickle模块用法
Sep 16 Python
如何在sublime编辑器中安装python
May 20 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
Python OpenCV实现图形检测示例详解
Apr 08 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文件上传类
2016/08/29 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
python手写均值滤波
2020/02/19 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
Python实现异步IO的示例
2020/11/05 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
优质的学校老师推荐信
2013/10/28 职场文书
学院书画协会部门岗位职责
2013/12/01 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
竞赛口号大全
2014/06/16 职场文书
银行贷款委托书范本
2014/10/11 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
酒桌上的开场白
2015/06/01 职场文书
追悼词范文大全
2015/06/23 职场文书
投诉信范文
2015/07/02 职场文书
小学中队委竞选稿
2015/11/20 职场文书