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基础教程之循环介绍
Aug 29 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
使用python爬取抖音视频列表信息
Jul 15 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
Python 私有化操作实例分析
Nov 21 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
python实现经纬度采样的示例代码
Dec 10 Python
python树莓派通过队列实现进程交互的程序分析
Jul 04 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
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
javascript闭包的理解
2015/04/01 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
详解VUE 数组更新
2017/12/16 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
解密Python中的描述符(descriptor)
2015/06/03 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
花店创业计划书范文
2014/02/07 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
青年标兵事迹材料
2014/08/16 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
学生自我评语
2015/01/04 职场文书
2015年公务员工作总结
2015/04/24 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python
Win11快速关闭所有广告推荐
2022/04/19 数码科技