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处理python编码问题
Mar 13 Python
python实现进程间通信简单实例
Jul 23 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 Python
pip安装python库的方法总结
Aug 02 Python
使用 Python 遍历目录树的方法
Feb 29 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
如何在python中处理配置文件代码实例
Sep 27 Python
Python类的继承super相关原理解析
Oct 22 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程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
Python中for循环控制语句用法实例
2015/06/02 Python
Python读取properties配置文件操作示例
2018/03/29 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Django 外键的使用方法详解
2019/07/19 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
Python读写压缩文件的方法
2020/07/30 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
成人大专生实习期的自我评价
2013/10/02 职场文书
中专生自荐信
2014/06/25 职场文书
民用住房租房协议书
2014/10/29 职场文书
大学生见习报告范文
2014/11/03 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android