希望在不改变Excel格式情况下更新Excel内容,试过好几种库,都需要复制出sheet,但是都没有样式,非常麻烦,后来找了个方法,可以直接打开Excel进行操作,而且是实时更新的,代码也算是非常精简了。
用到两个库:xlrd、xlwings
一、读取Excel:
def readExceltoData(self,fileUrl:str):
#读取Excel文件并转换成分组后的list。
data = xlrd.open_workbook(fileUrl)
table = data.sheet_by_index(0)
rows=table.nrows #返回总行数
cols=table.ncols #返回总列数
r=0
reData=[] #要返回的数组
while rows > r:
rowData = table.row_values(r) #返回指定行的整条数据
reData.append(rowData)
r +=1
return reData
二、更新Excel:
def updateExcelFile(self,id ,reality,fileUrl):
# 找到指定id,更新其中指定列的数据
try:
workbook = xlwings.Book(fileUrl) # 连接excel文件
sht=workbook.sheets('Sheet1')
rows=sht.api.UsedRange.Rows
rowN=rows.count #返回sheet有数据的行数
r = 0
while r <= rowN:
r+=1
if sht.range('A'+str(r)).value == id:
sht.range('H' + str(r)).value=str(reality)
break
workbook.save()
return 'OK'
except:
return "文件保存出错!"