爬虫入门【9】Python链接Excel操作详解-openpyxl库
Openpyx是一个用于读写Excel2010各种xlsx/xlsm/xltx/xltm文件的python库。
现在大多数用的都是office2010了,如果之前之前版本的可以使用xlrd读,xlwt写,这里就不介绍了。
入门范例
from openpyxl import Workbook
wb=Workbook()#创建一个工作簿
ws=wb.active#获取工作的激活工作表
ws['A1']=42#在A1中插入内容
ws.append([1,2,3])#这里其实是在第二行插入了3个数字,占用了三个单元格
import datetime
ws['A2']=datetime.datetime.now()#在A2中插入了当前时间,把上一句的那个1挤掉了
wb.save('sample.xlsx')#保存到当前目录
简单操作
创建一个workbook
一般创建workbook后至少会有一个worksheet,我们可以通过active属性来获取。
我们还可以通过create_sheet()方法来创建新的worksheet。
一般默认创建的sheet的名字是序列化的,我们可以更改title属性来设置想要的名称。
一旦我们指定了名称,可以使用key的方法获取,wb['Title']
from openpyxl import Workbook
wb=Workbook()
ws=wb.active
ws1=wb.create_sheet('Mysheet')#默认插入到最后
ws2=wb.create_sheet('Mysheet1',0)#指定插入到第一个位置
ws.title='New Title'
ws3=wb['New Title']
如果我们想要遍历所有的sheet,可以用for循环。
for sheet in wb:
print(sheet.title)
我们还可以在同一个workbook内拷贝sheet
source=wb.active
target=wb.copy_worksheet(source)
控制单元格
单元格可以通过key的方式直接获取,如果不存在这个key,会创建一个。
并且可以直接指定单元格的值
c=ws['A3']
ws['A4']=4
另外一直是通过worksheet的cell()方法来指定单元格。
d=ws.cell(row=4,colum=2,value=10)
如果我们在内存中创建一个worksheet,它是默认没有包含cell的,只有第一次使用的时候才会创建。
所以我们可以提前将所需要的单元格过一遍,不指定值,就可以创建出来。
for i in range(1,101):
for j in range(1,101):
ws.cell(row=i,colum=j)
矩阵型的单元格组可以使用切片获取:
cell_range=ws['A1':'C2']
单列或者单行的单元格,也是类似的获取方式
colC=ws['C']
col_range=ws['C:D']
row10=ws[10]
row_range=ws[5:10]
或者采用迭代器的方法,iter_rows()和iter_cols()方法。
for row in ws.iter_rows(min_row=1,max_col=3,max_row=2):
for cell in row:
print(cell)
数据存储
一旦我们得到一个cell,我们就可以指定值了。
c.value='hello world'
print(c.value)
d.value=3.14
print(d.value)
保存文件
workbook的save方法,指定文件保存路径即可。
不过save方法会覆盖相同路径的文件。
wb=Workbook()
wb.save('sample.xlsx')
加载文件
需要引入load_workbook()
from openpyxl import load_workbook
wb2=load_workbook('sample.xlsx')
print(wb2.get_sheet_names())
几个范例
写workbook
在一个book中创建了3个sheet。
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.utils import get_column_letter
wb=Workbook()
dest_filename='empty_book.xlsx'
ws1=wb.active
ws1.title='range names'
for row in range(1,40):
ws1.append(range(600))
ws2=wb.create_sheet(title='Pi')
ws2['F5']=3.14
ws3=wb.create_sheet(title='Data')
for row in range(10,20):
for col in range(27,54):
ws3.cell(column=col,row=row,value='{0}'.format(get_column_letter(col)))
print(ws3['AA10'].value)
wb.save(filename=dest_filename)
读取一个workbook
from openpyxl import load_workbook
wb=load_workbook(filename='empty_book.xlsx')
sheet_ranges=wb['range names']
print(sheet_ranges['D18'].value)
其他诸如插入图片、构建图表等情况,用到的时候再讲解。
爬虫入门【9】Python链接Excel操作详解-openpyxl库的更多相关文章
- Python对Excel操作详解
Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl ...
- Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
- 【python】Python 字典(Dictionary)操作详解
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.一.创建字典字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = {'} ...
- Python 元组(Tuple)操作详解
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号, 列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可 一.创建元组 代码如下: tup1 = (' ...
- 爬虫入门之jsonPath PhantomJS与 selenium详解(六)
1 jsonPath数据格式 pip安装: pip install jsonpath 用来解析json格式的字符串,类似于xpath (1) json对象的转换 json.loads() json.d ...
- Python爬虫之爬取淘女郎照片示例详解
这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- python第七篇:Python 列表操作详解
Python列表操作详解 list函数 list() #生成一个空的列表 list(iterable) #用可迭代对象初始化一个列表 列表的 and 运算和 or 运算 列表and运算 > ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
随机推荐
- <转>Oracle Stream Replication技术
Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用. Oracle 的消息队列是通过发布/订阅的方式来解决事件管理.流复制(Stream re ...
- Linux常用指令总结
概述 因为平时不是经常使用Linux系统,每次用到都需要重新温习一遍,这里对自己平时经常使用到的指令做个小结,方便后面直接查阅. 常用指令 登陆root指令 sudo su - 安装软件及卸载指令 d ...
- 使用cros实现跨域请求
直接上代码 后端 this.Response.Headers.Add("Access-Control-Allow-Origin","*"); 响应流里添加一个h ...
- 使用结构(C# 编程指南)
struct 类型适于表示 Point.Rectangle 和 Color 等轻量对象. 尽管使用自动实现的属性将一个点表示为类同样方便,但在某些情况下使用结构更加有效. 例如,如果声明一个 1000 ...
- 多线程-ReentrantReadWriteLock
ReentrantLock具有完全互斥排他的效果,即同一时间只有一个线程在执行ReentrantLock.lock()方法后面的任务.这样做虽然保证了实例变量的线程安全,但效率却是非常低下的.JDK中 ...
- ActiveMQ从源代码构建
众多开源项目.我们一般都是直接拿过来用之而后快. 只是我们也应该知道这些项目是怎样从源代码构建而来的. 既然代码是写出来的,就不能避免有BUG存在,话说没有完美的软件,也没有无漏洞的程序. 事实上从源 ...
- mysql 两列互转
1.mysql 一张表两列互转 UPDATE tm_position as a,tm_position as b SET a.gps_longitude = b.gps_latitude,a.gps_ ...
- 第三篇:python函数
1.python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...
- c3p0 APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks
2018-01-04 15:02:03,319 ---com.mchange.v2.async.ThreadPoolAsynchronousRunner: com.mchange.v2.async.T ...
- python 练习题1--打印三位不重复数字
题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码 ...