python读取excel并写入excel,python读取excel文件
前段时间做了一个小项目,帮海洋系的一个教授做了一个数据处理软件。它的基本功能很简单,就是对Excel中的一些数据进行过滤统计,合并多个表格的内容等。我之前没有处理Excel数据的经验,甚至我自己也很少用Excel。我记得《Python核心编程》最后一章讲过用Win32 COM操作office。看了之后不是很清楚。Google找到了很多可以处理excel数据的模块。经过比较,最终选择了openpyxl。openpyxl专门用于处理Excel2007及以上版本生成的xlsx文件。可惜我得到的数据中xls和xlsx都有,不过转换起来并不难,所以暂时忽略这个问题。
模块的安装过程非常简单。官网上有简单的使用说明和API文档,整体上非常好用,基本满足我的需求。对于Excel文件,我需要做的就是读出相应位置的数据,并在相应位置写入数据。与此同时,python可以轻松完成数据处理。
1.Excel数据的类型和组织
openpyxl中定义了许多数据格式,我只介绍了三种最重要的格式:
NULL:空值,对应于python中的None,表示该单元格中没有数据。
Numberic:数字类型,按照浮点数统一处理。对应python中的float。
String:字符串,对应python中的unicode。
每个Excel数据文件从上到下分为三级对象:
工作簿:每个Excel文件都是一个工作簿。
工作表:每个工作簿可以包含多个工作表,具体对应于我们在Excel左下角看到的“工作表1”、“工作表2”等。
单元格:每一张都是我们平时看到的表格。它可以包含M行、N列和每个确定的行号。对应于列号的网格是一个单元格。
2.从Excel读取数据
从一个已有的xlsx文件中读取数据,按照Excel文件的三个级别做以下三个步骤。
1.打开工作簿:
从openpyxl导入load_workbook
WB=load _ workbook( file _ name . xlsx )
2.打开所需的工作表:
我们可以像这样打开工作簿中的第一个工作表:
ws=wb.get_active_sheet()
变量_active_sheet_index用于确定获取哪个工作表,默认设置为0。
您也可以通过名称获取工作表:
ws=WB . get _ sheet _ by _ name( sheet _ name )
Openpyxl似乎没有提供按索引阅读工作表,但我们总是可以通过sheet_name轻松实现:
工作表名称=wb.get _工作表名称()
ws=WB . get _ sheet _ by _ name(sheet _ names[索引])
3.获取相应单元格的值:
Openpyxl提供了两种读取单元格的方法。一种是按照Excel的习惯用字母表示列号,例如:
c=ws.cell(A4 )。价值
也可以通过行号和列号读取:
d=ws.cell(行=3,列=0)
3.将数据写入Excel
与阅读类似,编写Excel文件需要经过四个步骤:
1.创建新工作簿
直接创建新的工作簿对象:
wb=工作簿()
2.创建新工作表
默认情况下,新创建的工作表是最后一个。如果您想要创建一个顶部工作表,您可以传入参数0:
ws1=wb.create_sheet() #在末尾插入
ws2=wb.create_sheet(0) #在第一个位置插入
3.写入数据
只要把要写入的数据直接分配给对应的单元格,如果只修改一个表的话。您可以跳过前两步,但注意不要覆盖其他数据:
ws.cell(B5)=value1
ws.cell(行=3,列=7)=值2
4.保存数据
最后,写写数据。请注意,如果保存路径下有一个同名文件,则之前的文件将被覆盖:
wb.save(文件名. xlsx )
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。