Python学习笔记16—电子表格

news/2024/7/3 9:12:31

openpyl 模块是解决 Microsoft Excel 2007/2010 之类版本中扩展名是 Excel 2010 xlsx/xlsm/xltx/xltm 的文件的读写的第三方库。

安装

pip install openpyxl

workbook 和 sheet的建立

引入模块

>>> from openpyxl import Workbook

建立工作薄

>>> wb = Workbook()

建立sheet

>>> ws = wb.active

另外还可以在这个sheet后面追加

>>> ws1 = wb.create_sheet()

给sheet重命名

>>> ws.title = "Python"

此时,可以使用下面的方式从工作簿对象中得到 sheet

>>> ws01 = wb['Python'] #sheet 和工作簿的关系,类似键值对的关系
>>> ws is ws01
True

显示所有的sheet

>>> print wb.get_sheet_names()
[u'Python', 'Sheet1', 'Sheet2']

也可以用循环语句,把所有的 sheet 名字打印出来。

>>> for sh in wb:
...  print sh.title
... 
Python
Sheet1
Sheet2

cell

为了能够清楚理解填数据的过程,将电子表中约定的名称以下图方式说明:

对于 sheet,其中的 cell 是它的下级单位。所以,要得到某个 cell,可以这样:

>>> b4 = ws['B4']

这样

>>> a5 = ws.cell("A5")

还有这样

>>> a2 = ws.cell(row = 2, column = 1)

 

如果要给 B4 添加数据,可以这么做:

>>> ws['B4'] = 4444

因为 b4 引用了一个 cell 对象,所以可以利用这个对象的属性来查看其值:

>>> b4.value
4444

 

一次创建多个cell
>>> cells = ws["A1":"C3"]
>>> tuple(ws.iter_rows("A1:C3"))    #查看
((<Cell Python.A1>, <Cell Python.B1>, <Cell Python.C1>), (<Cell Python.A2>, <Cell Python.B2>, <Cell Python.C2>), (<Cell Python.A3>, <Cell Python.B3>, <Cell Python.C3>))

还可以用下面的循环方法,一个一个地读到每个cell 对象:

IndentationError: expected an indented block
>>> for row in ws.iter_rows("A1:C3"):
...   for cell in row:
...      print cell
... 
<Cell Python.A1>
<Cell Python.B1>
<Cell Python.C1>
<Cell Python.A2>
<Cell Python.B2>
<Cell Python.C2>
<Cell Python.A3>
<Cell Python.B3>
<Cell Python.C3>

给这些cell赋值

>>> i = 1
>>> for row in ws.rows:
...      for cell in row:
...         cell.value = i
...         i += 1
... 

查看添加的数据

>>> for col in ws.columns:
...   for cell in col:
...     print cell.value
... 
1
4
7
10
13
2
5
8
11
14
3
6
9
12
15


保存

>>> wb.save("demo.xlsx")

 

查看工作薄

 

读取已有的电子表格

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook("demo.xlsx")
>>> print wb2.get_sheet_names()
[u'Python', u'Sheet1', u'Sheet2']
>>> ws_wb2 = wb2["Python"]
>>> for row in ws_wb2.rows:
...   for cell in row:
...     print cell.value
... 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

 

 

其它第三方库

针对电子表格的第三方库,除了上面这个 openpyxl 之外,还有别的,列出几个,供参考,使用方法大同小异。
• xlsxwriter:针对 Excel 2010 格式,如 .xlsx,官方网站:https://xlsxwriter.readthedocs.org/,这个官方文档写的图文并茂。非常好读。
下面两个用来处理 .xls 格式的电子表表格。
• xlrd:网络文件:https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966
• xlwt:网络文件:http://xlwt.readthedocs.org/en/latest/

 


http://www.niftyadmin.cn/n/2001462.html

相关文章

《JavaScript语言精粹》内容精选

最近在读《JavaScript语言精粹》这本书&#xff0c;作者是 Douglas Crockford&#xff1b;Douglas Crockford是一名来自 Yahoo&#xff01;的资深JavaScript架构师&#xff0c;以创建和维护JSON&#xff08;JavaScript object notation&#xff09;格式而为大家所熟知。他会定期…

散记 ~ 2016-09-23

可能有人会疑惑&#xff1f;我以前文章不都是偏向项目系列的&#xff0c;现在怎么都有点偏了&#xff1f; 其实没有偏&#xff0c;而是真切的方向~~》 程序本来的目的就是便利生活&#xff0c;那么生活中遇到问题那么也就可以用程序来解决&#xff0c;解决方法多样&#xff0c;…

mysql5.7 编译安装

下载编译包&#xff1a; 内网地址&#xff1a; wget 192.168.101.66/pack/mysql-5.7.14.tar.gz 外网地址&#xff1a; wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.14.tar.gz 解压&#xff1a; tar zxvf mysql-5.7.14.tar.gz 进入编译文件夹&#xff1a; cd mysql…

前端使用js读取文件

最近同事问我js能不能读取本地文件&#xff1b; 想起以前看到js读取本地文件的文章&#xff0c;然后自己写了个demo。 ps:这有点像Java的IO流&#xff0c;但是又有差别。 首先我们定义一个input标签type"file" 1 jsReadFile:<input type"file" onchange…

Power BI+Office 365开启“教学大数据”模式(世纪互联)

在去年我们曾经写过一篇名为Power BIOffice 365开启“教务管理大数据”模式&#xff08;世纪互联&#xff09;的文章&#xff0c;得到了很好的反响。但是这个方法只局限能实现在线调查而不能实现在线测试。如何实现在线测试这个功能也是我们一直在思考的。 今天在一次偶然的机会…

Redis缓存服务部署

redis缓存服务部署转载于:https://blog.51cto.com/luchunning/1857690

将textField编辑完内容作为参数发送请求

将textField编辑完内容作为参数发送请求 首先赋值默认值 其次把编辑完的内容传给model,这样的话,model里面的数据就是编辑完之后的内容了

img标签-HTML5精讲 课时ID:6.9 【表严肃】#HTML教程 #HTML5教程 #img标签

6.9 <img>标签-HTML5精讲 课时ID:6.9 【表严肃】#HTML教程 #HTML5教程 #img标签 <img>用于定义网页中的图片 <html><body><img src"http://ww2.sinaimg.cn/mw690/006aIBkCjw1f8fchbk799g306807775k.gif"></body> </html>其…