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 相关文章推荐
windows下安装Python和pip终极图文教程
Mar 05 Python
Python基于高斯消元法计算线性方程组示例
Jan 17 Python
Python文件读写保存操作的示例代码
Sep 14 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
python使用knn实现特征向量分类
Dec 26 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
python实现多层感知器
Jan 18 Python
Django发送邮件功能实例详解
Sep 02 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
python3下pygame如何实现显示中文
Jan 11 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
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
Python程序设计入门(1)基本语法简介
2014/06/13 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
python 批量修改/替换数据的实例
2018/07/25 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
python如何使用腾讯云发送短信
2020/09/17 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
岗位职责的定义
2013/11/10 职场文书
会计实习生自我鉴定
2013/12/12 职场文书
工程专业应届生求职信
2014/02/19 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
婚育证明格式
2015/06/17 职场文书
推广普通话的宣传语
2015/07/13 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
React更新渲染原理深入分析
2022/12/24 Javascript