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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 Python
Python递归调用实现数字累加的代码
Feb 25 Python
python如何保存文本文件
Jun 07 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
Python分类测试代码实例汇总
Jul 23 Python
详解Python中第三方库Faker
Sep 25 Python
python 爬取免费简历模板网站的示例
Sep 27 Python
python list等分并从等分的子集中随机选取一个数
Nov 16 Python
python源文件的字符编码知识点详解
Mar 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作的文本留言本的例子(六)
2006/10/09 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
php object转数组示例
2014/01/15 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
Javascript var变量隐式声明方法
2009/10/19 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
python并发和异步编程实例
2018/11/15 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
.NET程序员的数据库面试题
2012/10/10 面试题
幼儿园保育员辞职信
2014/01/12 职场文书
施工安全协议书范本
2014/09/26 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书