python中的excel操作

1|0一. Excel在python中的应用


存测试数据

有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到。测试的时候就从数据库中读取出来。这点是非常重要的!

存测试结果

2|0二. Excel中的三大对象:


  • Workbook
  • Sheet
  • Cell

在excel中,主要的操作是在sheet中对数据进行读、写、修改的操作

操作流程:

1. 打开一个excel文件,或者创建一个excel文件,生成一个工作簿(workbook)对象

2. 获取某个表单(sheet)对象

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

3|0三. Excel库


python中有好几个与excel操作相关的模块

xlrd库:从excel中读取数据,支持xls, xlsx

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

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

 

官方说法:

openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files

网址:http://www.python-excel.org/

4|0四. openpyxl--常用操作


from openpyxl import load_workbook

#打开一个已存在的excel文件

wb = load_workbook("sample.xlsx")

from openpyxl import Workbook

#创建一个新的excel文件

wb = Workbook("hello.xlsx")

 

#获取sheet对象,get_sheet_by_name是旧的方法,新的方法是wb[sheetname]

sh = wb.get_sheet_by_name("Sheet1")  

#创建一个新的sheet

sh_new = wb.create_sheet("新建的sheet")

 

#获取指定单元格中的值

cl = sh.cell(row=1, column=1).value

#修改指定单元格的值

sh.cell(row=1, column=1).value = "hello"

 

#获取当前sheet的数据总行数

rows = sh.max_row

#获取当前sheet的数据总列数

columns = sh.max_column

 

#保存当前workbook中所有的修改

wb.save("sample.xlsx")

注意:openpyxl中列和行的起始下标都是1

5|0五. 实例


#引入库 from openpyxl import load_workbook #加载一个excel文件,进入到工作簿 wb = load_workbook("testdata.xlsx") #获取指定的表单 sh = wb["Sheet1"] #获取表单中数据 name = sh.cell(row=2, column=1).value print(name) #修改表单中的数据--修改数据,注意在写操作时,必须先关闭excel文件 sh.cell(row=2, column=3).value = 18 #保存修改数据的操作--保存数据 wb.save("testdata.xlsx") #获取总行数、总列数 print(sh.max_row) print(sh.max_column) print(sh.cell(row=3, column=3).value) sh.cell(row=3, column=3).value = 25 print(sh.cell(row=3, column=3)) #读取所有数据,按行读取 for index in range(1, sh.max_row + 1): print("行号: ", index) for sub_i in range(1, sh.max_column + 1): print("列号: ", sub_i, "内容: ", sh.cell(row=index, column=sub_i).value) 结果: 小翟 3 3 18 <Cell 'Sheet1'.C3> 行号: 1 列号: 1 内容: name 列号: 2 内容: sex 列号: 3 内容: age 行号: 2 列号: 1 内容: 小翟 列号: 2 内容: 男 列号: 3 内容: 18 行号: 3 列号: 1 内容: 瑛子 列号: 2 内容: 女 列号: 3 内容: 25

 

附excel内容:

 

 


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/9074685.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(1015)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示