pywintypes.com_error: (-2146827864, 'OLE error 0x800a01a8', None, None)的问题原因是什么?

此用户名涉嫌违规 2020-02-10 05:12:56
今天用xwlings写个python程序来处理excel文件,在测试的时候发现了这个问题,找了很久也找不到原因。想问问哪个大佬帮帮解释一下

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)


这是对excel文件操作的代码

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()



...全文
4635 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
K_I_S_S 2022-09-17
  • 打赏
  • 举报
回复 5

这个错误其实就是操作的前一个电子表格,在代码逻辑上没退出没有完全退出。或者是用excel继续其他的工作,这时如果客户操作中手动关闭了Excel文件、或者无意打开了其他的设么Excel文件,从而导致代码对文件没有权限,这样的话都会出现类似于OLE error 800A01A8这样的报错。

weixin_54780820 2021-08-06
  • 打赏
  • 举报
回复

——来自一年半以后的回答哈哈哈

weixin_54780820 2021-08-06
  • 打赏
  • 举报
回复

我今天调试代码时也遇到了这个问题。一开始代码还是在正常运行,之后有一个函数中的参数名我把它改了,之后再运行就出现了这样的提示。后面我把函数中的参数名修改回去之后就好

  • 打赏
  • 举报
回复
引用 2 楼 冰风漫天 的回复:
这行

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

嗯。。。不管用,改完添加了新的错误。pywintypes.com_error: (-2147352567, '发生意外。', (0, None, None, None, 0, -2146827284), None)。我的excel文件数据格式是这个样子的: id date bianhao code 1 2003-01-03 001 23,27,26,05,16,06,46 2 2003-01-07 002 10,43,12,38,09,26,15
  • 打赏
  • 举报
回复
引用 4 楼 冰风漫天的回复:
文件可以私信发给我看下吗?
你好,怎么私信发文件?
冰风漫天 2020-02-11
  • 打赏
  • 举报
回复
文件可以私信发给我看下吗?
冰风漫天 2020-02-10
  • 打赏
  • 举报
回复
这行

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

冰风漫天 2020-02-10
  • 打赏
  • 举报
回复
excel文件内容可以发一下样例吗?

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧