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之hello world
May 21 Python
python使用7z解压apk包的方法
Apr 18 Python
Python检测网站链接是否已存在
Apr 07 Python
Python中取整的几种方法小结
Jan 06 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
pandas中Timestamp类用法详解
Dec 11 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
python树莓派通过队列实现进程交互的程序分析
Jul 04 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 array_flip() 删除数组重复元素
2009/01/14 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
python实现文件名批量替换和内容替换
2014/03/20 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
如何理解Python中包的引入
2020/05/29 Python
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
门诊挂号室室长岗位职责
2013/11/27 职场文书
军训心得体会
2013/12/31 职场文书
市场总经理岗位职责
2014/04/11 职场文书
白酒营销策划方案
2014/08/17 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
音乐教师个人总结
2015/02/06 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android