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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
python unittest单元测试的步骤分析
Aug 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
linux下实现定时执行php脚本
2015/02/13 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
python如何求圆的面积
2020/07/01 Python
Django实现简单的分页功能
2021/02/22 Python
new修饰符是起什么作用
2015/06/28 面试题
英文版餐饮业求职信
2013/10/18 职场文书
工程管理英文求职信
2014/03/18 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
支行行长竞聘报告
2014/11/06 职场文书
死者家属慰问信
2015/03/24 职场文书
放假通知范文
2015/04/14 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
正规借条模板
2015/05/26 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
Python爬虫实战之爬取携程评论
2021/06/02 Python