使用Python将单元格范围从Excel复制到另一个

时间:2020-09-21 08:11:08

标签: python excel pywin32

我想将一系列单元格从一个Excel文件复制到另一个(在Copying Data into Excel找到一个示例,并根据需要对其进行了修改),但收到一条错误消息(如下所示)。数据已复制到目标文件,但无法保存并关闭文件。 我试图创建,重命名以及删除save_file,但这无济于事。 我在这里想念什么?

import win32com.client as win32


# Define the full path for the data file file
data_file = "C:/2020/data.xlsx"

# Define the full path for the final output file
save_file = "C:/2020/result.xlsx"

# Define the template file
template_file = "C:/2020/template.xlsx"


# Use com to copy the files around
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False
excel.DisplayAlerts = False


# Template file
wb_template = excel.Workbooks.Open(template_file)

# Open up the data file
wb_data = excel.Workbooks.Open(data_file)

# Copy from the data file (select all data in V2:V22 columns)
wb_data.Worksheets("Sheet1").Range("V2:V22").Select()

# Paste into the template file
excel.Selection.Copy(Destination=wb_template.Worksheets("Sheet2").Range("C7"))

# Must convert the path file object to a string for the save to work
wb_template.SaveAs(str(save_file))


wb_template.Close()
wb_data.Close()
excel.DisplayAlerts = True
excel.Quit()`

错误消息:

com_error                                 Traceback (most recent call last)
<ipython-input-37-ffb7fd7b0160> in <module>
     33 
     34 # Must convert the path file object to a string for the save to work
---> 35 wb_template.SaveAs(str(save_file))
     36 
     37 
~\Anaconda3\lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x9\_Workbook.py in SaveAs(self, Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local, WorkIdentity)
    286                         , FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup
    287                         , AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout
--> 288             , Local, WorkIdentity)
    289 
    290         def SaveAsXMLData(self, Filename=defaultNamedNotOptArg, Map=defaultNamedNotOptArg):
com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Microsoft Excel cannot access the file 'C:\\//2020/24D8CD00'. There are several possible reasons:\n\n• The file name or path does not exist.\n• The file is being used by another program.\n• The workbook you are trying to save has the same name as a currently open workbook.", 'xlmain11.chm', 0, -2146827284), None)

1 个答案:

答案 0 :(得分:0)

save_file = "C:/2020/result.xlsx"更改为save_file = "C:\\2020\\result.xlsx"

相关问题