Python读写Excel文件方法介绍


Posted in Python onNovember 22, 2014

一、读取excel

这里介绍一个不错的包xlrs,可以工作在任何平台。这也就意味着你可以在Linux下读取Excel文件。

首先,打开workbook;

import xlrd

wb = xlrd.open_workbook('myworkbook.xls')

检查表单名字:

wb.sheet_names()

得到第一张表单,两种方式:索引和名字   
sh = wb.sheet_by_index(0)

sh = wb.sheet_by_name(u'Sheet1')

递归打印出每行的信息:  
for rownum in range(sh.nrows):

    print sh.row_values(rownum)

如果只想返回第一列数据:
first_column = sh.col_values(0)

[code]

通过索引读取数据:

[code]

cell_A1 =  sh.cell(0,0).value

cell_C4 = sh.cell(rowx=3,colx=2).value

注意:这里的索引都是从0开始的。

二、写excel

这里介绍一个不错的包xlwt,可以工作在任何平台。这也就意味着你可以在Linux下保存Excel文件。

基本部分

在写入Excel表格之前,你必须初始化workbook对象,然后添加一个workbook对象。比如:

import xlwt

wbk = xlwt.Workbook()

sheet = wbk.add_sheet('sheet 1')

这样表单就被创建了,写入数据也很简单:

# indexing is zero based, row then column

sheet.write(0,1,'test text')

之后,就可以保存文件(这里不需要想打开文件一样需要close文件):

wbk.save('test.xls')

深入探索

worksheet对象,当你更改表单内容的时候,会有警告提示。

sheet.write(0,0,'test')

sheet.write(0,0,'oops')

 

# returns error:

# Exception: Attempt to overwrite cell:

# sheetname=u'sheet 1' rowx=0 colx=0

解决方式:使用cell_overwrite_ok=True来创建worksheet:

sheet2 =  wbk.add_sheet('sheet 2', cell_overwrite_ok=True)

sheet2.write(0,0,'some text')

sheet2.write(0,0,'this should overwrite')

这样你就可以更改表单2的内容了。

更多:

# Initialize a style

style = xlwt.XFStyle()

 

# Create a font to use with the style

font = xlwt.Font()

font.name = 'Times New Roman'

font.bold = True

 

# Set the style's font to this new one you set up

style.font = font

 

# Use the style when writing

sheet.write(0, 0, 'some bold Times text', style)

xlwt 允许你每个格子或者整行地设置格式。还可以允许你添加链接以及公式。其实你可以阅读源代码,那里有很多例子:

    dates.py, 展示如何设置不同的数据格式
    hyperlinks.py, 展示如何创建超链接 (hint: you need to use a formula)
    merged.py, 展示如何合并格子
    row_styles.py, 展示如何应用Style到整行格子中.

三、修改excel

Python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读 取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。而 xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。

因此对于读取和生成Excel文件都非常容易处理,但是对于已经存在的Excel文件进行修改就比较麻烦了。不过,还有一个xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能。其实际也只是在xlrd.Book和xlwt.Workbook之间建立了一个管道而已,如下图:

xlutils.copy模块的copy()方法实现了这个功能,示例代码如下:

from xlrd import open_workbook

from xlutils.copy import copy

 

rb = open_workbook('m:\\1.xls')

#通过sheet_by_index()获取的sheet没有write()方法
rs = rb.sheet_by_index(0)

 

wb = copy(rb)
#通过get_sheet()获取的sheet有write()方法

ws = wb.get_sheet(0)

ws.write(0, 0, 'changed!')

 

wb.save('m:\\1.xls')

四、参考

http://pypi.python.org/pypi/xlrd
http://pypi.python.org/pypi/xlwt
http://pypi.python.org/pypi/xlutils

Python 相关文章推荐
Python下的subprocess模块的入门指引
Apr 16 Python
详解Python3中yield生成器的用法
Aug 20 Python
Python实现购物车程序
Apr 16 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
python super函数使用方法详解
Feb 14 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
Mar 30 Python
python开发入门——set的使用
Sep 03 Python
pycharm永久激活超详细教程
Oct 29 Python
Python中的包和模块实例
Nov 22 #Python
Python动态加载模块的3种方法
Nov 22 #Python
收集的几个Python小技巧分享
Nov 22 #Python
Python获取Windows或Linux主机名称通用函数分享
Nov 22 #Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 #Python
Python中使用SAX解析xml实例
Nov 21 #Python
python sort、sorted高级排序技巧
Nov 21 #Python
You might like
BBS(php & mysql)完整版(四)
2006/10/09 PHP
elgg 获取文件图标地址的方法
2010/03/20 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
jQuery操作css样式
2017/05/15 jQuery
vue二级路由设置方法
2018/02/09 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
Python读取Excel的方法实例分析
2015/07/11 Python
在python中实现对list求和及求积
2018/11/14 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python批量启动多线程代码实例
2020/02/18 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
社团成立邀请函
2014/01/08 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
年会搞笑主持词
2014/03/27 职场文书
廉洁自律承诺书
2014/03/27 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
陪护人员误工证明
2015/06/24 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
公司晚会主持词
2019/04/17 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android