pywintypes.com_error: (-2147352567, ‘发生意外。‘, (0, None, None, None, 0, -2147024809), None)

这篇具有很好参考价值的文章主要介绍了pywintypes.com_error: (-2147352567, ‘发生意外。‘, (0, None, None, None, 0, -2147024809), None)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 批量将excel另存为pdf时报错。

  File "<COMObject <unknown>>", line 6, in ExportAsFixedFormat
pywintypes.com_error: (-2147352567, '发生意外。', (0, None, None, None, 0, -2147024809), None)

 将报错文件提取出来后运行原路径无误,单独运行报错文件仍然不行。

此时可以将问题定位到文件。

这是一个模糊的报错信息,网上众说纷纭,或说权限问题,或说文件已被打开,或说服务器未正确启动,一一排除后发现是文件存在隐藏表,读取第一个sheet时读取到了隐藏表导致报错。

将隐藏表取消隐藏,或者获取当前活跃表,解决问题。

ws.Visible= False文章来源地址https://www.toymoban.com/news/detail-786944.html

a=1
while not wb.Worksheets(a).Visible:
    a+=1
ws = wb.Worksheets(a)
import os
import win32process,win32api,win32con
import win32com.client
class abc():
    def __init__(self,path):
        self.path_excels = path
        self.excels = []
        self.name=[]
        self.pdf_small = os.path.join(path, 'pdf')
        if not os.path.exists(self.pdf_small):
            os.makedirs(self.pdf_small)
    def getexcels(self):
        a=0
        for i in os.listdir(self.path_excels):
            if i.split('.')[-1] in ['xlsx', 'xls']:
                a+=1
                this_excel = os.path.join(self.path_excels, i)
                self.excels.append(this_excel)
                target_name = os.path.join(self.pdf_small, str(a) + '.pdf')
                self.name.append(target_name)
    def openexcel(self):
        self.excel = win32com.client.DispatchEx('Excel.Application')
        self.excel.Visible = False  # 是否可视化
        self.excel.DisplayAlerts = False

        for i in range(len(self.excels)):
            self.exceltopdf(i)

        self.close_excel_by_force()

    def exceltopdf(self, i):
        wb = self.excel.Workbooks.Open(self.excels[i], ReadOnly=False)
        ws = wb.Worksheets(1)
        ws.Show(True)
        # target_name=os.path.join(self.pdf_small,self.name[i])
        ws.PageSetup.Zoom = False
        ws.PageSetup.FitToPagesTall = 1
        ws.PageSetup.FitToPagesWide = 1
        print(self.excels[i], self.name[i])
        ws.ExportAsFixedFormat(0, self.name[i][:-4])  # 不需带文件后缀
        wb.Close()

    def run(self):
        try:
            self.getexcels()
            if not self.name: raise TypeError('没有excel文件')
            self.openexcel()
            # shutil.rmtree(self.pdf_small)
        except:
            if self.excel:
                self.close_excel_by_force()
            import traceback
            print(traceback.format_exc())
            # wx.MessageBox(traceback.format_exc())
    def close_excel_by_force(self):  # 关闭进程

        # Get the window's process id's
        hwnd = self.excel.Hwnd
        t, p = win32process.GetWindowThreadProcessId(hwnd)
        # Ask window nicely to close
        try:
            handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0, p)
            if handle:
                win32api.TerminateProcess(handle, 0)
                win32api.CloseHandle(handle)
        except:
            pass

if __name__=='__main__':
    path = r"C:\Users\gzyz\Desktop\dd\b1"
    abc(path).run()

到了这里,关于pywintypes.com_error: (-2147352567, ‘发生意外。‘, (0, None, None, None, 0, -2147024809), None)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包