Python处理Excel数据
2012-08-01 23:01
246 查看
前段时间做了个小项目,帮个海洋系的教授做了个数据处理的软件。基本的功能很简单,就是对Excel里面的一些数据进行过滤,统计,对多个表的内容进行合并等。之前没有处理Excel数据的经验,甚至于自己都很少用到Excel。记得《Python核心编程》的最后一章里有讲到用Win32 COM操作office, 看了一下讲的不是很清楚。google了一下找到不少能处理excel数据的模块。对比了一下最终选定了openpyxl,openpyxl专门用于处理Excel2007及以上版本产生的xlsx文件。不幸的是我所得到的数据中xls和xlsx都有,不过转换并不是什么难事,就暂时吧这个问题忽略了。
模块的安装过程非常简单,官网上有简单的使用说明和API文档,整体来说使用非常容易,也基本能满足我的需求。对于Excel文件,我所需要的只是从中将相应位置的数据读取出来,以及把数据写入到对应的位置中去。而其间数据的处理,通过python可以很容易地完成。
NULL: 空值,对应于python中的None,表示这个cell里面没有数据。
numberic: 数字型,统一按照浮点数来进行处理。对应于python中的float。
string: 字符串型,对应于python中的unicode。
每一个Excel数据文件从上至下分为三个层级的对象:
workbook: 每一个Excel文件就是一个workbook。
sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。
cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。
1. 打开workbook:
2. 打开所需的sheet:
我们可以这样打开workbook中的第一个sheet:
变量_active_sheet_index用来确定获取哪一个sheet,而默认情况下它被置为0。
也可以通过sheet的名称来获取sheet:
openpyxl似乎没有提供按索引来读取sheet,不过我们总是能很容易地通过sheet_name来实现:
3. 获取对应cell的值:
openpyxl提供可两种方式来读取cell,一是按照Excel的习惯用字母来代表列号,例如:
也可以按照行号列号来读取:
1. 新建workbook
直接新建一个workbook对象即可:
2. 新建sheet
默认情况下,新创建的sheet是排在最后的,若想要创建一个排在最前的sheet,可以传入参数0:
3. 写入数据
直接将要写入的数据赋值给相应的cell即可,若仅仅是修改一个表。可以跳过前两个步骤,不过要注意不要覆盖掉其它数据:
4. 保存数据
最后写入将数据写入即可,注意若保存路径下有同名的文件的话,之前的文件会被覆盖:
模块的安装过程非常简单,官网上有简单的使用说明和API文档,整体来说使用非常容易,也基本能满足我的需求。对于Excel文件,我所需要的只是从中将相应位置的数据读取出来,以及把数据写入到对应的位置中去。而其间数据的处理,通过python可以很容易地完成。
1. Excel数据的类型及组织方式
openpyxl中定义了多种数据格式,我只涉及到了其中最重要的三种:NULL: 空值,对应于python中的None,表示这个cell里面没有数据。
numberic: 数字型,统一按照浮点数来进行处理。对应于python中的float。
string: 字符串型,对应于python中的unicode。
每一个Excel数据文件从上至下分为三个层级的对象:
workbook: 每一个Excel文件就是一个workbook。
sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。
cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。
2. 从Excel中读取数据
从一个既有的xlsx文件中读取数据,按照Excel文件的三个层级,分别做以下三个步骤1. 打开workbook:
from openpyxl import load_workbook wb = load_workbook('file_name.xlsx')
2. 打开所需的sheet:
我们可以这样打开workbook中的第一个sheet:
ws = wb.get_active_sheet()
变量_active_sheet_index用来确定获取哪一个sheet,而默认情况下它被置为0。
也可以通过sheet的名称来获取sheet:
ws = wb.get_sheet_by_name("sheet_name")
openpyxl似乎没有提供按索引来读取sheet,不过我们总是能很容易地通过sheet_name来实现:
sheet_names = wb.get_sheet_names() ws = wb.get_sheet_by_name(sheet_names[index])
3. 获取对应cell的值:
openpyxl提供可两种方式来读取cell,一是按照Excel的习惯用字母来代表列号,例如:
c = ws.cell('A4').value
也可以按照行号列号来读取:
d = ws.cell(row = 3, column = 0)
3. 将数据写入Excel
同读取类似,写入一个Excel文件,要经历一下四个步骤:1. 新建workbook
直接新建一个workbook对象即可:
wb = Workbook()
2. 新建sheet
默认情况下,新创建的sheet是排在最后的,若想要创建一个排在最前的sheet,可以传入参数0:
ws1 = wb.create_sheet() # insert at the end ws2 = wb.create_sheet(0) # insert at the first position
3. 写入数据
直接将要写入的数据赋值给相应的cell即可,若仅仅是修改一个表。可以跳过前两个步骤,不过要注意不要覆盖掉其它数据:
ws.cell('B5') = value1 ws.cell(row = 3, column = 7) = value2
4. 保存数据
最后写入将数据写入即可,注意若保存路径下有同名的文件的话,之前的文件会被覆盖:
wb.save('file_name.xlsx')
相关文章推荐
- 用Python如何处理excel里面的数据
- python3.6安装openpyxl用于处理excel数据
- python 合并多张excel 处理重复数据
- python 利用openpyxl包处理excel数据并作图
- 利用Python处理Excel数据
- Python处理excel数据
- Python处理Excel(四):自定义类处理Excel数据
- DataNitro: 用Python高效处理Excel数据
- python结合Arcpy处理EXCEL数据生成多边形
- Python处理Excel数据
- Python处理Excel(三):内置数据类型处理Excel数据
- python数据分析-处理CSV/EXCEL表格文件
- Python处理Excel数据
- python处理Excel数据串行串列问题
- Python对表格的数据进行处理然后在Excel中制作柱形图
- mac环境下,Python读取excel数据,并对行列做输出处理
- Python中xlrd、xlwt、xlutils模块,实现在Excel读取和写入数据
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱(转)
- java大数据处理-大量数据到Excel
- 利用POI框架的SAX方式处理大数据2007版Excel(xlsx)