python高手之路python处理excel文件(方法汇总)


Posted in Python onJanuary 07, 2016

用python来自动生成excel数据文件。python处理excel文件主要是第三方模块库xlrd、xlwt、xluntils和pyExcelerator,除此之外,python处理excel还可以用win32com和openpyxl模块。

方法一:

小罗问我怎么从excel中读取数据,然后我百了一番,做下记录

excel数据图(小罗说数据要给客户保密,我随手写了几行数据):

python高手之路python处理excel文件(方法汇总)

python读取excel文件代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 读取excel数据
# 小罗的需求,取第二行以下的数据,然后取每行前13列的数据
import xlrd
data = xlrd.open_workbook('test.xls') # 打开xls文件
table = data.sheets()[0] # 打开第一张表
nrows = table.nrows # 获取表的行数
for i in range(nrows): # 循环逐行打印
if i == 0: # 跳过第一行
continue
print table.row_values(i)[:13] # 取前十三列

excel的写操作等后面用到的时候在做记录

方法二:

使用xlrd读取文件,使用xlwt生成Excel文件(可以控制Excel中单元格的格式)。但是用xlrd读取excel是不能对其进行操作的;而xlwt生成excel文件是不能在已有的excel文件基础上进行修改的,如需要修改文件就要使用xluntils模块。pyExcelerator模块与xlwt类似,也可以用来生成excel文件。

1. [代码]test_xlrd.py

#coding=utf-8
#######################################################
#filename:test_xlrd.py
#author:defias
#date:xxxx-xx-xx
#function:读excel文件中的数据
#######################################################
import xlrd
#打开一个workbook
workbook = xlrd.open_workbook('E:\\Code\\Python\\testdata.xls')
#抓取所有sheet页的名称
worksheets = workbook.sheet_names()
print('worksheets is %s' %worksheets)
#定位到sheet1
worksheet1 = workbook.sheet_by_name(u'Sheet1')
"""
#通过索引顺序获取
worksheet1 = workbook.sheets()[0]
#或
worksheet1 = workbook.sheet_by_index(0)
"""
"""
#遍历所有sheet对象
for worksheet_name in worksheets:
worksheet = workbook.sheet_by_name(worksheet_name)
"""
#遍历sheet1中所有行row
num_rows = worksheet1.nrows
for curr_row in range(num_rows):
row = worksheet1.row_values(curr_row)
print('row%s is %s' %(curr_row,row))
#遍历sheet1中所有列col
num_cols = worksheet1.ncols
for curr_col in range(num_cols):
col = worksheet1.col_values(curr_col)
print('col%s is %s' %(curr_col,col))
#遍历sheet1中所有单元格cell
for rown in range(num_rows):
for coln in range(num_cols):
cell = worksheet1.cell_value(rown,coln)
print cell
"""
#其他写法:
cell = worksheet1.cell(rown,coln).value
print cell
#或
cell = worksheet1.row(rown)[coln].value
print cell
#或
cell = worksheet1.col(coln)[rown].value
print cell
#获取单元格中值的类型,类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
cell_type = worksheet1.cell_type(rown,coln)
print cell_type
"""

2. [代码]test_xlwt.py

#coding=utf-8
#######################################################
#filename:test_xlwt.py
#author:defias
#date:xxxx-xx-xx
#function:新建excel文件并写入数据
#######################################################
import xlwt
#创建workbook和sheet对象
workbook = xlwt.Workbook() #注意Workbook的开头W要大写
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)
#向sheet页中写入数据
sheet1.write(0,0,'this should overwrite1')
sheet1.write(0,1,'aaaaaaaaaaaa')
sheet2.write(0,0,'this should overwrite2')
sheet2.write(1,2,'bbbbbbbbbbbbb')
"""
#-----------使用样式-----------------------------------
#初始化样式
style = xlwt.XFStyle() 
#为样式创建字体
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
#设置样式的字体
style.font = font
#使用样式
sheet.write(0,1,'some bold Times text',style)
"""
#保存该excel文件,有同名文件时直接覆盖
workbook.save('E:\\Code\\Python\\test2.xls')
print '创建excel文件完成!'

3. [代码]test_xlutils.py

#coding=utf-8
#######################################################
#filename:test_xlutils.py
#author:defias
#date:xxxx-xx-xx
#function:向excel文件中写入数据
#######################################################
import xlrd
import xlutils.copy
#打开一个workbook
rb = xlrd.open_workbook('E:\\Code\\Python\\test1.xls') 
wb = xlutils.copy.copy(rb)
#获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法
ws = wb.get_sheet(0)
#写入数据
ws.write(1, 1, 'changed!')
#添加sheet页
wb.add_sheet('sheetnnn2',cell_overwrite_ok=True)
#利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变
wb.save('E:\\Code\\Python\\test1.xls')

4. [代码]test_pyExcelerator_read.py

#coding=utf-8
#######################################################
#filename:test_pyExcelerator_read.py
#author:defias
#date:xxxx-xx-xx
#function:读excel文件中的数据
#######################################################
import pyExcelerator
#parse_xls返回一个列表,每项都是一个sheet页的数据。
#每项是一个二元组(表名,单元格数据)。其中单元格数据为一个字典,键值就是单元格的索引(i,j)。如果某个单元格无数据,那么就不存在这个值
sheets = pyExcelerator.parse_xls('E:\\Code\\Python\\testdata.xls')
print sheets

5. [代码]test_pyExcelerator.py

#coding=utf-8
#######################################################
#filename:test_pyExcelerator.py
#author:defias
#date:xxxx-xx-xx
#function:新建excel文件并写入数据
#######################################################
import pyExcelerator
#创建workbook和sheet对象
wb = pyExcelerator.Workbook()
ws = wb.add_sheet(u'第一页')
#设置样式
myfont = pyExcelerator.Font()
myfont.name = u'Times New Roman'
myfont.bold = True
mystyle = pyExcelerator.XFStyle()
mystyle.font = myfont
#写入数据,使用样式
ws.write(0,0,u'ni hao 帕索!',mystyle)
#保存该excel文件,有同名文件时直接覆盖
wb.save('E:\\Code\\Python\\mini.xls')
print '创建excel文件完成!'
Python 相关文章推荐
Python 解析XML文件
Apr 15 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python中str.format()详解
Mar 12 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
解决yum对python依赖版本问题
Jul 05 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
详解Python调用系统命令的六种方法
Jan 28 Python
Python解析最简单的验证码
Jan 07 #Python
Python中http请求方法库汇总
Jan 06 #Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 #Python
分享Python文本生成二维码实例
Jan 06 #Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 #Python
使用Python神器对付12306变态验证码
Jan 05 #Python
Python聊天室实例程序分享
Jan 05 #Python
You might like
php下过滤HTML代码的函数
2007/12/10 PHP
php数组总结篇(一)
2008/09/30 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python+opencv识别图片中的圆形
2020/03/25 Python
Django时区详解
2019/07/24 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
python烟花效果的代码实例
2020/02/25 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
HTML5 解析规则分析
2009/08/14 HTML / CSS
服装设计专业毕业生求职信
2014/04/09 职场文书
门市房租房协议书
2014/12/04 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
golang内置函数len的小技巧
2021/07/25 Golang