xlwings报错:pywintypes.com_error: (-2147352567, ‘发生意外。‘, (0,

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

img


def detail_report(self):
# 打开 Excel 文件
file_path = os.path.abspath('.\余额清零汇总表_模板.xlsx')

    # 连接 Excel 应用程序
    app = xw.App(visible=False)

    # 打开工作簿
    workbook = app.books.open(file_path)

    # 选择要操作的工作表
    worksheet = workbook.sheets['Sheet1']

    # 遍历工作表的每个合并单元格
    merged_cell_range = worksheet.api.UsedRange.MergeCells

    # 获取合并单元格的起始单元格
    start_cell = worksheet.range(merged_cell_range).start_cell

    # 获得打印的时间
    date_time = datetime.datetime.now().strftime('%Y年%m月%d日')

    # 修改合并单元格的值
    start_cell.value = '汇总日期:{}'.format(self.year_tag)
    worksheet['B3'].value = '制表日期:{}'.format(date_time)
    worksheet['B4'].value = self.total_count
    worksheet['B5'].value = self.total_amount

    # 保存修改后的 Excel 文件
    file_path_1 = os.path.abspath('.\余额清零汇总表.xlsx')
    workbook.save(file_path_1)

    # 关闭工作簿
    workbook.close()

    # 关闭 Excel 应用程序
    app.kill()

    time.sleep(5)

    # 将 Excel 文件转换为 PDF
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open(file_path_1)
    wb.ExportAsFixedFormat(0, os.path.abspath('.\余额清零汇总表.pdf'))
    wb.Close()
    time.sleep(5)

    # 打开保存的 PDF 文件进行打印预览
    pdf_file_path = os.path.abspath('.\余额清零汇总表.pdf')
    os.startfile(pdf_file_path)

可以借鉴下

import os
import xlwings as xw

wb = xw.Book()
sht = wb.sheets['Sheet1']
sht.pictures.add(os.path.abspath('C:/Users/Administrator/Desktop/1.jpg'))  # 相当于改为C:\\Users\\Administrator\\Desktop\\1.jpg
wb.save('test.xlsx')
wb.close()


这题需要的话,我远程帮你看

这个错误信息表示在 PyWin32 中调用 ws2_32.dll 模块中的 CreateFileW 函数时发生了错误。具体来说,错误信息中的第一行指出了错误的位置和原因,即在 CreateFileW 函数的第四个参数(错误中为 (0, None , None , None ,0,-2147466859))上出现了问题。第二行到第六行给出了详细的错误信息,这些行包含了一些详细的错误码和错误信息。最后一行是错误信息的总结,表示出现了一个无法解析的参数。

要解决这个错误,需要找出导致错误的代码,并进行相应的修改。可能的解决方案包括更新 ws2_32.dll 模块或修改代码以正确处理参数
引用文心一言

以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:

根据错误信息,这似乎是xlwings在调用COM组件时遇到的一个错误。pywintypes是xlwings依赖的一个包,用于连接Python和COM组件。

报这个错误的常见原因有:

  1. 没有安装Excel。xlwings需要Excel来与工作簿和工作表进行交互,所以Excel是xlwings的必要依赖。
  2. Excel版本不匹配。xlwings需要Excel 2007及以上版本,早期版本的Excel不支持。
  3. 没有启用COM组件。xlwings通过COM组件来与Excel通信,所以需要在系统中注册COM组件,并给予相应用户权限。
  4. 其他COM注册表或权限问题。COM组件的注册和用户权限配置错误也会导致xlwings无法正常工作。

所以,我的解决建议如下:

  1. 确认您的电脑上安装了Excel 2007及以上版本。如果没有安装,需要先安装Excel。
  2. 以管理员身份运行命令提示符,运行regsvr32 excel.exe /u取消注册Excel COM组件,然后运行regsvr32 excel.exe再次注册。
  3. 以管理员身份运行命令提示符,运行python -m xlwings.license授权xlwings使用Excel COM组件。
  4. 确认您的用户对COM组件有足够的权限。可以尝试以管理员身份运行Python脚本,查看是否可以解决问题。
  5. 检查其他COM注册表项和权限设置。可参考微软官方的COM注册和权限故障排除文档进行必要修复。
  6. 如果问题仍未解决,可以尝试卸载xlwings并重装,或安装更低版本的xlwings(如0.15.2版本)。

希望以上方法能帮助您解决调用xlwings时遇到的pywintypes错误