python教程:封装⽅法⽤于读取excel 利⽤openpyxl⽅法实现读写excel表格
l import load_workbook
import os
class ExcelMethod():
def__init__(self, filename, sheetName):
self.filename = filename
self.wb = load_workbook(filename)
# 通过⼯作的表名获取⼀个⼯作表对象
self.sheet = self.wb[sheetName]
# 获取⼯作表中的最⼤⾏号
self.maxRowNum = self.sheet.max_row
# 获取⼯作表中的最⼤列号
self.max_column = self.sheet.max_column
# 获取总的⾏
def readExcel(self):
dataList =[]
try:
for row in ws:
tmpList =[]
for cell in row:
tmpList.append(cell.value)
dataList.append(tmpList)
except:
print("%s加载失败"% self.filename)
else:
return dataList[1:]
def saveExcel(self, row, text):
try:
ll(row, self.max_column, text)
self.wb.save(self.filename)
except:
print("%s 保存失败"% self.filename)
if __name__=="__main__":
dri_url = os.path.wd()+ r"\User1.xlsx")
excel = ExcelMethod(dri_url,"Sheet1")
dataJson = adExcel()
print(dataJson)
excel.saveExcel(4,'pass')
1.实现获取excel某张表的⾏数、单元格数据
#coding=utf-8
import xlrd
#获取excel⽂件
data = xlrd.open_workbook('file_path/xxx.xls')#存放excle表格的路径
#获取第⼀张表数据
tables = data.sheets()[0]
#打印表⾏数
ws)
#打印第4⾏,第3列单元格数据
ll_value(3,2))
2.封装获取表格⽅法
此⽅法需要实现的作⽤是:其他⽅法再调⽤此⽅法时,如果传⼊file_name和sheet_id,就调⽤对应路径的excel⽂件和对应的表。如果不传这两个字段,就调⽤默认表格。
'''
遇到问题没⼈解答?⼩编创建了⼀个Python学习交流QQ:778463939
寻有志同道合的⼩伙伴,互帮互助,⾥还有不错的视频学习教程和PDF电⼦书!
'''
def__init__(self,file_name=None,sheet_id=None):
if file_name:
self.file_name = file_name
self.sheet_id = sheet_id
else:
self.file_name ='file_path/xxx.xls'
self.sheet_id =0
self.data = _data()
3.封装获取表格数据⽅法
封装获取tables的⽅法,⽤以之后获取单元格⾏数、单元格数据,或其他表信息使⽤。
def get_data(self):
data = xlrd.open_workbook(self.file_name)
tables = data.sheets()[self.sheet_id]
return tables
4.封装获取单元格⾏数⽅法
'''
遇到问题没⼈解答?⼩编创建了⼀个Python学习交流QQ:778463939
寻有志同道合的⼩伙伴,互帮互助,⾥还有不错的视频学习教程和PDF电⼦书!
'''
def get_lines(self):
tables = self.data
ws
5.封装获取单元格数据的⽅法
def get_value(self,row,col):
return ll_value(row,col)
6.封装获取总⾏数和总列数
'''
遇到问题没⼈解答?⼩编创建了⼀个Python学习交流QQ:778463939
寻有志同道合的⼩伙伴,互帮互助,⾥还有不错的视频学习教程和PDF电⼦书!
'''
def get_nrown_ncols(self):
#获取总⾏数
rowNum = ws
#获取总列数
colNum = ls
return rowNum ,colNum
7.写⼊数据到excel
def write_excel(self,row,column,value_back):
'''
:param row: 某⼀列
:param value: 需要写⼊的值
:return:
'''
python怎么读入excel
wb=load_workbook(self.file_name)
sheel = wb[self.sheel_name]
#把值写到row,column组成的单元格
#保存excel
wb.save(self.file_name)
8.根据⾏号查对应内容
#根据⾏号,到该⾏的内容
def get_row_values(self,row):
tales = self.data
row_data = w_values(row)
return row_data
整体代码如下:
'''
遇到问题没⼈解答?⼩编创建了⼀个Python学习交流QQ:778463939
寻有志同道合的⼩伙伴,互帮互助,⾥还有不错的视频学习教程和PDF电⼦书!
'''
import xlrd
class OpeExcel:
def__init__(self,file_name=None,sheet_id=None):
if file_name:
self.file_name = file_name
self.sheet_id = sheet_id
else:
self.file_name ='file_path/xxx.xls'
self.sheet_id =0
self.data = _data()
#获取sheets的内容
def get_data(self):
data = xlrd.open_workbook(self.file_name)
tables = data.sheets()[self.sheet_id]
return tables
#获取单元格⾏数
def get_lines(self):
tables = self.data
ws
#获取单元格数据
def get_value(self,row,col):
return ll_value(row,col)
if __name__ =='__main__':
opers = OpeExcel()
_lines())
_value(3,2))
9.给⼀个excel⽂件追加内容:
from xlrd import open_workbook
py import copy
import os
dri_url = os.path.wd()+r"\user.xls")
rexcel = open_workbook(dri_url)# ⽤wlrd提供的⽅法读取⼀个excel⽂件
rows = rexcel.sheets()[0].nrows # ⽤wlrd提供的⽅法获得现在已有的⾏数
excel = copy(rexcel)# ⽤xlutils提供的copy⽅法将xlrd的对象转化为xlwt的对象
table = _sheet(0)# ⽤xlwt对象的⽅法获得要操作的sheet
table.write(1,3,'pass')# xlwt对象的写⽅法,参数分别是⾏、列、值
excel.save(dri_url)# xlwt对象的保存⽅法,这时便覆盖掉了原来的excel
python编辑已存在的excel坑: BadZipFile: File is not a zip file
为了能反复编辑已存在的excel⽂件并保存,需要xlwt、xlrd、xlutils组合起来使⽤,代码如下:
'''
遇到问题没⼈解答?⼩编创建了⼀个Python学习交流QQ:778463939
寻有志同道合的⼩伙伴,互帮互助,⾥还有不错的视频学习教程和PDF电⼦书!'''
import xlwt, os, xlrd
py import copy
class Do_Excel:
def__init__(self,filename,sheetname="Sheet1"):
self.filename = filename
self.sheetname = sheetname
#读取excel
def excel_read(self,x,y):
data = xlrd.open_workbook(self.filename)
tabel = data.sheet_by_name(self.sheetname)
ll_value(x,y)
#判断exce⽂件是否存在,不存在则创建,存在则直接打开编辑
def excel_create(self):
if not ists(self.filename):
data = xlwt.Workbook()
table = data.add_sheet(self.sheetname)
table.write(0,0,"id")
data.save(self.filename)
#综合xlw/py 读写excle
def write(self,row,col,value):
rb = xlrd.open_workbook(self.filename)
wb = copy(rb)
ws = wb.get_sheet(0)#1代表是写到第⼏个⼯作表⾥,从0开始算是第⼀个。 ws.write(row,col,value)
wb.save(self.filename)
if __name__=="__main__":
dir= os.path.split(os.path.split(alpath(__file__))[0])[0]
dir_excel = os.path.join(dir+r"\data\user1.xlsx")
Do_Excel(dir_excel).write(2,5,'pass')
解决办法⼆:直接使⽤openpyxl的Workbook和load_workbook,简单直接
rom openpyxl import Workbook,load_workbook
import os
class Do_Excel:
def__init__(self,filename,sheetname='Sheet1'):
self.filename=filename
self.sheetname=sheetname
def write(self,i,j,value):
if not ists(self.filename):
wb = Workbook()
sh = wb.create_sheet(self.sheetname)
else:
wb = load_workbook(self.filename)
sh = wb[self.sheetname]
wb.save(self.filename)
Do_Excel('test222.xlsx').write(1,1,'sdcds')
Do_Excel('test222.xlsx').write(1,2,'change')
Do_Excel('test222.xlsx').write(3,2,'pass')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论