【问题标题】:Using win32.com to copy excel worksheet throws Microsoft Excel copy paste error使用win32.com复制excel工作表抛出Microsoft Excel复制粘贴错误
【发布时间】:2019-08-19 21:08:26
【问题描述】:

当我使用 win32.com 打开一个 excel 文件并将工作表粘贴到另一个 excel 文件时,我收到一个复制粘贴错误。

import win32com.client
import os

excel = win32com.client.Dispatch("Excel.Application")

w = excel.Workbooks.Open(os.path.join(os.getcwd(), "my_excel_file.xlsx"))

w.Sheets.Copy(wb.Sheets(1))

wb.SaveAs(os.path.join(os.getcwd(), "new_excel_file.xlsx"))
excel.Application.Quit()

这是我得到的错误:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'Excel 无法将工作表插入到目标工作簿中,因为它包含的行和列少于源工作簿。要移动或将数据复制到目标工作簿,您可以选择数据,然后使用复制和粘贴命令将其插入到另一个工作簿的工作表中。', 'xlmain11.chm', 0, -2146827284), None)

【问题讨论】:

  • 我也看到了同样的错误。您对这个问题有任何更新吗?
  • 您好,我无法解决此问题,但各种其他问题尝试谈论此问题均无济于事。这是我找到的最相似的一个:stackoverflow.com/questions/40995672/… 希望对您有所帮助。

标签: python-3.x win32com excel-automation


【解决方案1】:

我能够重现您的错误,但它不是来自您提交的代码。我更改了您的原始代码以重现该错误。此外,缺少诸如“wb”变量未定义之类的信息,但您的问题是 Excel 问题,与 python 或 Windows COM 库无关。您的错误的以下 sn-p 描述了您的 excel 错误是什么以及下面解释如何获取它的资源。

'Excel cannot insert the sheets into the destination workbook, because it 
contains fewer rows and columns than the source workbook. To move or copy 
the data to the destination workbook, you can select the data, and then use 
the Copy and Paste commands to insert it into the sheets of another workbook'

总而言之,如果您使用 Microsoft Excel 2003 版本并尝试将其保存到 2007 版本中,则会出现问题。

只需将"wb.Sheets.Copy(w.Sheets(1))" 设置为"w.Sheets.Copy(wb.Sheets(1))" 即可解决您的问题。见以下代码:

import win32com.client
import os

try:
    excel = win32com.client.Dispatch("Excel.Application")
    wb = excel.Workbooks.Add()
    w = excel.Workbooks.Open(os.path.join(os.getcwd(), "my_excel_file.xlsx"))
    w.Sheets.Copy(wb.Sheets(1))
    wb.SaveAs(os.path.join(os.getcwd(), "new_excel_file.xlsx"))
finally:
    # Release resources
    wb = None
    w = None
    excel.Application.Quit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多