零基础使用Python读写处理Excel表格的方法


Posted in Python onMay 02, 2019

由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是Python最容易操作。

安装库Python环境

首先当然是配环境,不过选Python的一个重要原因就是Mac内是自带Python环境的,不需要额外的配置环境,省下了一笔工作,如果你用的是Windows系统,那就还需要配置一下Python的环境了,我Mac的Python版本是2.7。

第三方库

Python自己是不支持直接操作Excel的,但是Python强大之处就在于有大量好用的第三方库,这里我们选用读Excel的xlrd库和写Excel的xlwt库来操作。

关于第三方库的安装很简单,首先,去专门下载Python库的网站下载两个库的源码:
* 下载xlrd
* 下载xlwt

注意对于新手来说最简单的安装方式就是源码安装,不需要去折腾第三方库的管理器,直接点击这个先下载两个库的源码:

零基础使用Python读写处理Excel表格的方法

零基础使用Python读写处理Excel表格的方法

你看他后面也描述了类型是源码嘛。

下载好之后在mac中解压,得到文件夹,可以看到里面都是有一个 setup.py 文件的:

零基础使用Python读写处理Excel表格的方法

这里当然不是直接双击安装了,py类型表示它是一个Python代码文件,双击只会打开文件看代码。我们要使用终端,输入命令号进入当前所在的文件夹,比如我把文件放在了“下载”中,那么做法是:

$ cd Downloads/
$ cd xlwt-1.1.2
$ sudo python setup.py install

这里 cd 的意思是进入该文件夹,sudo 的意思是使用管理员权限安装,不使用的话会告诉你没有权限的,回车后会要你输入电脑密码,输入后回车即可,python 是执行 python代码文件的命令,install 就是安装了。

然后会看到刷刷刷一堆文字过去,最后告诉你 finished 了,就是安装完成了。

xlrd 也是同样的安装方式。

写代码

读写Excel的第三方库都安装好了,就可以开始写代码了。

我们在一个文件夹下创建一个 hello.py 文件,然后用sublime之类的文档编辑器打开它,开始编写代码。(PS:Python中 # 号开头表示注释)

读Excel

# -*- coding: utf-8 -*- 
import xdrlib ,sys
import xlrd

#打开excel文件
def open_excel(file= 'test.xlsx'):
  try:
    data = xlrd.open_workbook(file)
    return data
  except Exception,e:
    print str(e)

#根据名称获取Excel表格中的数据  参数:file:Excel文件路径   colnameindex:表头列名所在行的索引 ,by_name:Sheet1名称
def excel_table_byname(file= 'test.xlsx', colnameindex=0, by_name=u'Sheet1'):
  data = open_excel(file) #打开excel文件
  table = data.sheet_by_name(by_name) #根据sheet名字来获取excel中的sheet
  nrows = table.nrows #行数 
  colnames = table.row_values(colnameindex) #某一行数据 
  list =[] #装读取结果的序列
  for rownum in range(0, nrows): #遍历每一行的内容
     row = table.row_values(rownum) #根据行号获取行
     if row: #如果行存在
       app = [] #一行的内容
       for i in range(len(colnames)): #一列列地读取行的内容
        app.append(row[i])
       list.append(app) #装载数据
  return list

#主函数
def main():
  tables = excel_table_byname()
  for row in tables:
    print row

if __name__=="__main__":
  main()

这个代码很多我都注释了,只讲几个要注意的地方,首先最开始我们设置了utp8编码,然后一定要记得导入xlrd包,这样才能使用它的函数去读取excel。里面的 main() 是主函数,python 会运行这个函数,这个函数调用了其余的函数来读取数据。这个代码实现的是将excel文件 test.xlsx 中的 Sheet1 表中的数据一行行读取出来并打印。

Excel中内容如下:
零基础使用Python读写处理Excel表格的方法

有两行内容。

要运行这个代码,需要用终端使用命令行,首先 cd 进入到代码所在的文件夹,代码和Excel文件都要放在这个文件夹里。然后使用 python hello.py 命令来运行这个代码文件:

零基础使用Python读写处理Excel表格的方法

以上就是 Python 读取并打印出来的内容,u 表示使用的是unicode编码,可以看到与Excel中是一致的。

创建Excel

使用xlwt库我们可以创建一个Excel:

# -*- coding: utf-8 -*- 
import xlwt

def testXlwt(file = 'new.xls'):
  book = xlwt.Workbook() #创建一个Excel
  sheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheet
  sheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据
  sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据
  book.save(file) #创建保存文件

#主函数
def main():
  testXlwt()

if __name__=="__main__":
  main()

这个代码更简单,同样记得要在开头导入库。

代码中我们创建了一个excel,在其中添加一个sheet,写入两个数据,最后按照我们的命名保存了文件。

按照上面同样的方法运行代码后,终端中不会有打印的内容,但是我们去文件夹中看会得到一个名为 new.xls 的新excel文件,打开可以看到:

零基础使用Python读写处理Excel表格的方法

按照我们的方法写了数据,同时sheet名字也是hello。

值得注意的是,在xlwt库的说明中有这么一句话:

Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.6, 3.3+

也就是说,它只能创建 xls 的文件格式,不能创建现在的 xlsx 格式,其实有点老了,如果你把文件名写了 xlsx 格式,将会无法打开。

处理Excel内容

其实单独的读和写只是基本功,我们最终是想要处理Excel中的内容的。

这里我们假设一个使用场景,我们希望将Excel中所有第一列和第二列相同的行数据筛选出来保存到一个新的Excel中去。

那么我们的流程是:

打开目标Excel读取内容读取每一行的同时筛选第一列和第二列相等的行保留下来创建一个新Excel将筛选出来的内容写进去保存新Excel

那么我们看代码:

# -*- coding: utf-8 -*- 
import xdrlib ,sys
import xlrd
import xlwt

#打开excel文件
def open_excel(file= 'test.xlsx'):
  try:
    data = xlrd.open_workbook(file)
    return data
  except Exception,e:
    print str(e)

#根据索引获取Excel表格中的数据  参数:file:Excel文件路径   colnameindex:表头列名所在行的索引 ,by_index:表的索引
def excel_table_byindex(file= 'test.xlsx',colnameindex=0,by_index=0):
  data = open_excel(file) #打开excel文件
  table = data.sheets()[by_index] #根据sheet序号来获取excel中的sheet
  nrows = table.nrows #行数
  ncols = table.ncols #列数
  colnames = table.row_values(colnameindex) #某一行数据 
  list =[] #装读取结果的序列
  for rownum in range(0,nrows): #遍历每一行的内容

     row = table.row_values(rownum) #根据行号获取行
     if row: #如果行存在
       app = [] #一行的内容
       for i in range(len(colnames)): #一列列地读取行的内容
        app.append(row[i])
       if app[0] == app[1] : #如果这一行的第一个和第二个数据相同才将其装载到最终的list中
        list.append(app)
  testXlwt('new.xls', list) #调用写函数,讲list内容写到一个新文件中
  return list

#将list中的内容写入一个新的file文件
def testXlwt(file = 'new.xls', list = []):
  book = xlwt.Workbook() #创建一个Excel
  sheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheet
  i = 0 #行序号
  for app in list : #遍历list每一行
    j = 0 #列序号
    for x in app : #遍历该行中的每个内容(也就是每一列的)
      sheet1.write(i, j, x) #在新sheet中的第i行第j列写入读取到的x值
      j = j+1 #列号递增
    i = i+1 #行号递增
  # sheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据
  # sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据
  book.save(file) #创建保存文件

#主函数
def main():
  tables = excel_table_byindex()
  for row in tables:
    print row

if __name__=="__main__":
  main()

这次我们开头要导入xlrd和xlwt两个库,因为既要读也要写。

代码内容基本与上面两个差不多,有一点点加深,在读取的时候我们判断了第一列和第二列数据相同的行才加到list中去。在写的时候我们用了两个for循环来对新excel中的一个个单元格写数据,使用了i和j两个变量来记录位置。此外在获取sheet的时候,与上面的不同,这里是通过sheet的序号(这里是0)来获取的,上面的是通过sheet名称来获取。

我们要处理的Excel中的内容是这样的:

零基础使用Python读写处理Excel表格的方法

按道理我们筛选后只应该保留第一行的内容,运行完后我们得到了一个新的Excel文件,里面的内容如下:

零基础使用Python读写处理Excel表格的方法

可以看到和预期是相符的。

这里只是简单的例子,两个库的操作还有很多,能够进行的处理也有很多,如果要处理大量数据,可能还要考虑内存,分批次来处理,总之,本文只是一个入门,尽量追求零基础也能学着使用来解放劳动力,更多的用法,就看自己琢磨了。

可以下载我的示例工程:https://github.com/Cloudox/PYReadWriteExcelDemo

以上所述是小编给大家介绍的Python读写处理Excel表格详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
简单实现python聊天程序
Apr 01 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
Python中私有属性的定义方式
Mar 05 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
Python TestCase中的断言方法介绍
May 02 #Python
Python3中的bytes和str类型详解
May 02 #Python
利用pyinstaller打包exe文件的基本教程
May 02 #Python
Python中psutil的介绍与用法
May 02 #Python
Python3.5字符串常用操作实例详解
May 01 #Python
Python3.5文件修改操作实例分析
May 01 #Python
详解pandas的外部数据导入与常用方法
May 01 #Python
You might like
PHP 压缩文件夹的类代码
2009/11/05 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
老生常谈进程线程协程那些事儿
2017/07/24 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
python判断元素是否存在的实例方法
2020/09/24 Python
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
广州盈通面试题
2015/12/05 面试题
展会邀请函范文
2014/01/26 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
主持词开场白
2014/03/17 职场文书
小学生评语集锦
2014/04/18 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
淘宝好评语句大全
2014/12/31 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
教师个人总结范文
2015/02/11 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书