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多线程编程中的join函数使用心得
Sep 02 Python
跟老齐学Python之有点简约的元组
Sep 24 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
使用Python制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
python sort、sort_index方法代码实例
Mar 28 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
Python基于Socket实现简单聊天室
Feb 17 Python
Python实现数字的格式化输出
Aug 01 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
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
简单的分页代码js实现
2016/05/17 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python实现决策树分类
2018/08/30 Python
python使用udp实现聊天器功能
2018/12/10 Python
Python中@property的理解和使用示例
2019/06/11 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
详解Redis瘦身指南
2021/05/26 Redis
vue实现拖拽交换位置
2022/04/07 Vue.js