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实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
详解django.contirb.auth-认证
Jul 16 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
python与字符编码问题
May 24 Python
pytorch自定义初始化权重的方法
Aug 17 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
python3中for循环踩过的坑记录
Dec 14 Python
python asyncio 协程库的使用
Jan 21 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
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
python读取mysql数据绘制条形图
2020/03/25 Python
解决python对齐错误的方法
2020/07/16 Python
Python分类测试代码实例汇总
2020/07/23 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
环保项目建议书
2014/08/26 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
vue修饰符.capture和.self的区别
2022/04/22 Vue.js