Python操作Excel

前言:

Python操作Excel使用openpyxl模块,python中有好几个与excel相关操作的模块。

xlrd库:从excel中读取数据,支持xls、xlsx格式。

xlwt库:对excel进行修改操作,不支持对xlsx格式的修改。

xlutils库:在xlrd和xlwd中对一个已存在的文件进行修改。

openpyxl库:主要针对xlsx格式的excel进行读取和编辑。

一、openpyxl模块介绍

openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。

二、安装openpyxl模块

命令行中运行:pip install openpyxl

三、Excel中的三大对象:WorkBook、Sheet、Cell

在excel中主要的操作是在sheet中对数据进行读、写、修改的操作。操作流程如下:

1)生成一个工作薄(workbook)对象,workbook = load_workbook("这里写excel文件路径")。

2)获取某个表单(sheet)对象,sheet = workbook["这里写sheet名字"]。

3)在表单对象中的单元格(cell)中读、写、修改数据。

源码如下:

1 1 from openpyxl import load_workbook #引入库 2 2 3 3 # 1.生成一个工作薄对象 4 4 workbook = load_workbook('testdata.xlsx') 5 5 6 6 #获取指定的表单 7 7 sheet = workbook['Sheet1'] 8 8 9 9 # 获取第一个表单 1010 ws = workbook.active 1111 1212 # 读取表单中的数据 1313 data = sheet.cell(row=2,column=1).value 1414 print(data) 1515 1616 # 修改表单中的数据 1717 sheet.cell(row=2,column=3).value = 18 1818 1919 # 保存数据 2020 workbook.save('testdata.xlsx') 2121 print('保存成功') 2222 2323 #获取总行数 2424 print('共有',sheet.max_row,'行') 2525 print('共有',sheet.max_column,'列') 2626 2727 # 读取所有的数据 2828 # 按行读取 2929 for index in range(1,sheet.max_row+1): 3030 print('行号',index) 3131 for i in range(1,sheet.max_column+1): 3232 print('列号:',i,'内容:',sheet.cell(row=index,column=i).value)

四、读取sheet中所有数据通用类函数,列表嵌套列表 

1from openpyxl import load_workbook 2 3 class DoExcel: 4 def __init__(self,file_path,sheet_name): 5 self.file_path = file_path 6 self.wb = load_workbook(file_path) 7 self.sheet = self.wb[sheet_name] 8 9 # 第一种:列表嵌套列表,缺点:要数每个值的索引 10 def do_excel(self): 11 maxrow = self.sheet.max_row #获取最大行 12 maxrol = self.sheet.max_column #获取最大列 13 test_datas = [] #所有数据 14 for i in range(2,maxrow+1): 15 single_data = [] #每行数据 16 for j in range(1,maxrol+1): 17 new_data = self.sheet.cell(i,j).value 18 single_data .append(new_data) 19 test_data.append(single_data ) 20 # print(test_data) 21 return test_data #返回所有数据 22 23if __name__ == '__main__': 24 test_data = DoExcel('test_data.xlsx','test_data').do_excel()

 五、读取sheet中所有数据通用类函数,列表嵌套字典

1from openpyxl import load_workbook 2 3class DoExcel: 4 def __init__(self,file_path,sheet_name): 5 self.file_path = file_path 6 self.wb = load_workbook(file_path) 7 self.sheet = self.wb[sheet_name] 8 9 # 第二种:列表嵌套字典,每一行数据保存在字典里 10 def do_excel(self,button,case_id_list): 11 maxrow = self.sheet.max_row #获取最大行 12 maxcolumn = self.sheet.max_column #获取最大列 13 14 # ---获取所有表头,也就是第一行--- 15 headers = [] 16 for col in range(1,maxcolumn+1): 17 headers.append(self.sheet.cell(1,col).value) 18 19 test_datas = [] #所有数据 20 for row in range(2,maxrow+1): 21 single_data = {} #存储单行数据 22 for i in range(1,len(headers) + 1): 23 single_data[headers[i-1]] = self.sheet.cell(row,i).value 24 test_datas.append(single_data) 25 print(test_datas) 26 27if __name__ == '__main__': 28 test_data = DoExcel('test_data.xlsx','test_data').do_excel()
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

超全整理|Python 操作 Excel 库 xlwings 常用操作详解!

大家好,我是早起。在之前的文章中我们曾详细的讲解了如何使用openpyxl操作Excel,其实在Python中还有其他可以直接操作Excel文件的库,如xlwings、xlrd、xlwt等等,本文就将讲解另一个优秀的库xlwings开头还是想说一下,各个库之间没有明确的好坏之分,每个库都有其适合的应用场景,并且xlwings和openpyxl