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之入门(四)运算
May 27 Python
python统计日志ip访问数的方法
Jul 06 Python
python爬取各类文档方法归类汇总
Mar 22 Python
python爬虫正则表达式之处理换行符
Jun 08 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
python中sympy库求常微分方程的用法
Apr 28 Python
Python configparser模块常用方法解析
May 22 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
Python爬虫之爬取某文库文档数据
Apr 21 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/12/13 PHP
php网站地图生成类示例
2014/01/13 PHP
PHP实现的json类实例
2015/07/28 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
Python操作Jira库常用方法解析
2020/04/10 Python
Python 中Operator模块的使用
2021/01/30 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
班会关于环保演讲稿
2013/12/29 职场文书
2019年工作总结范文
2019/05/21 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python