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生成器的使用方法
Nov 21 Python
python实现从web抓取文档的方法
Sep 26 Python
Python Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
如何使用python进行pdf文件分割
Nov 11 Python
python实现高斯投影正反算方式
Jan 17 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 Python
如何理解python接口自动化之logging日志模块
Jun 15 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
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
php依赖注入知识点详解
2019/09/23 PHP
Javascript调用C#代码
2011/01/17 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python logging类库使用例子
2014/11/22 Python
Python reduce()函数的用法小结
2017/11/15 Python
深入浅析Python传值与传址
2018/07/10 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
Python实现简单猜数字游戏
2021/02/03 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
学校教学工作总结2015
2015/05/19 职场文书
运动会3000米加油稿
2015/07/21 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
MySql数据库触发器使用教程
2022/06/01 MySQL