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 15 Python
Python实现简单登录验证
Apr 13 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 Python
微信跳一跳辅助python代码实现
Jan 05 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 Python
Python如何使用turtle库绘制图形
Feb 26 Python
Python3 io文本及原始流I/O工具用法详解
Mar 23 Python
python 追踪except信息方式
Apr 25 Python
python的setattr函数实例用法
Dec 16 Python
Python实现位图分割的效果
Nov 20 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
mysq GBKl乱码
2006/11/28 PHP
php MYSQL 数据备份类
2009/06/19 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
PHP链表操作简单示例
2016/10/15 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
Python语法快速入门指南
2015/10/12 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
群众路线教育实践活动心得体会
2014/03/07 职场文书
检讨书范文500字
2015/01/28 职场文书
社会实践活动报告
2015/02/05 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
2016新年致辞
2015/08/01 职场文书