37,744
社区成员
发帖
与我相关
我的任务
分享
Traceback (most recent call last):
File "D:\LiuHeCai\xls_data_operation.py", line 30, in MyFrame1OnActivate
last_row = self.sheet.range('A'+str(self.sheet.cells.last_cell.row)).end('up').row
File "D:\LiuHeCai\venv\lib\site-packages\xlwings\main.py", line 871, in cells
return Range(impl=self.impl.cells)
File "D:\LiuHeCai\venv\lib\site-packages\xlwings\_xlwindows.py", line 620, in cells
return Range(xl=self.xl.Cells)
File "D:\LiuHeCai\venv\lib\site-packages\xlwings\_xlwindows.py", line 116, in __getattr__
v = getattr(self._inner, item)
File "D:\LiuHeCai\venv\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2146827864, 'OLE error 0x800a01a8', None, None)
from UI.noname import MyFrame1
import xlwings as xw
import wx
import time,datetime
class MyFrame(MyFrame1):
def __init__(self, parent):
MyFrame1.__init__(self, parent)
self.OpenExcelFile("./2003-2020.xls")
def OpenExcelFile(self, file):
self.app=xw.App(visible=False, add_book=False)
self.app.display_alerts = True
self.app.screen_updating=True
self.wb=self.app.books.open(file)
self.sheet=self.wb.sheets['2003']
def CloseExcel(self):
self.wb.close()
self.app.quit()
def LoadExcelData(self, address):
result=self.sheet[address].value
return(result)
def MyFrame1OnActivate( self, event ):
# 获取excel表最后一行
last_row = self.sheet.range('A'+str(self.sheet.cells.last_cell.row)).end('up').row
# last_row = info.last_cell.row
self.m_textCtrl16.AppendText("日期 期数 号码\n")
for i in range(last_row-9, last_row+1):
row = str(i)
row_content = str((self.sheet['B' + row].value).strftime("%Y-%m-%d")) + " " + \
str(int(self.sheet['C' + row].value)).zfill(3) + " " + str(self.sheet['D' + row].value) + '\n'
self.m_textCtrl16.AppendText(row_content)
def MyFrame1OnClose(self, event):
self.CloseExcel()
exit()
这个错误其实就是操作的前一个电子表格,在代码逻辑上没退出没有完全退出。或者是用excel继续其他的工作,这时如果客户操作中手动关闭了Excel文件、或者无意打开了其他的设么Excel文件,从而导致代码对文件没有权限,这样的话都会出现类似于OLE error 800A01A8这样的报错。
——来自一年半以后的回答哈哈哈
我今天调试代码时也遇到了这个问题。一开始代码还是在正常运行,之后有一个函数中的参数名我把它改了,之后再运行就出现了这样的提示。后面我把函数中的参数名修改回去之后就好
last_row = self.sheet.range('A'+str(self.sheet.cells.last_cell.row)).end('up').row
改成下面的试试
last_row = self.sheet.range('A'+str(self.sheet.used_range.rows.count)).end('up').row