Python 无法打开创建的Excel文件

Python 无法打开创建的Excel文件,python,excel,openpyxl,Python,Excel,Openpyxl,我在源文件夹中有一个Excel源文件(*.xlsm)和另一个包含一些数据的文件(也是*.xlsm)。我必须创建第三个文件,它必须是*.xls文件,基本上是包含第二个文件的一些数据的Excel源文件。为此,我编写了以下代码: from openpyxl import load_workbook file1 = "C:\\Users\Desktop\file1.xlsm" file2 = "C:\\Users\Desktop\file2.xlsm" file3 = "C:\\Users\Deskt

我在源文件夹中有一个Excel源文件(
*.xlsm
)和另一个包含一些数据的文件(也是
*.xlsm
)。我必须创建第三个文件,它必须是
*.xls
文件,基本上是包含第二个文件的一些数据的Excel源文件。为此,我编写了以下代码:

from openpyxl import load_workbook

file1 = "C:\\Users\Desktop\file1.xlsm"
file2 = "C:\\Users\Desktop\file2.xlsm"
file3 = "C:\\Users\Desktop\file3.xls"

wb1 = load_workbook(file1)
sheet1 = wb1["Sheet1"]

wb2 = load_workbook(file2)
sheet2 = wb2["Sheet1"]

sheet1["A1"].value = sheet2["A1"].value

wb1.save(file3)
代码似乎正常,并且没有返回任何错误,但是我无法打开创建的
文件3

我不明白为什么,我试图更改第三个文件的扩展名,但
*.xlsx
*.xlsm
都显示了这个问题。我还试图删除线条部分

sheet1["A1"].value = sheet2["A1"].value

要了解问题是否与工作表的编写有关,但问题仍然存在。

首先,请不要说明代码没有创建任何新文件,而只是重新保存现有文件

还不清楚您想要什么:是否要创建
文件3
?用什么信息?你的代码没有做任何这方面的事情

但是,我尝试运行您的代码的简短版本,但出现错误:

openpyxl.utils.exceptions.InvalidFileException:openpyxl不支持 支持.xlsm的文件格式,请检查是否可以用Excel打开 第一。支持的格式有:.xlsx、.xlsm、.xltx、.xltm

很可能您的文件格式不受支持。尝试以
xlsx
格式重新保存文件。我认为问题在于宏:如果你的文件中没有宏,那么改变格式应该不会有任何问题。如果您有,我不确定openpyxl是否会以这种方式工作(至少没有任何解决方法)


也许会有帮助。它建议提取
xlms
文件(它们是zip文件),处理代表工作表格式的文件(而不是宏),然后将所有内容重新组合在一起。

首先,请注意,您的代码不是在创建任何新文件,而是在重新保存现有文件

还不清楚您想要什么:是否要创建
文件3
?用什么信息?你的代码没有做任何这方面的事情

但是,我尝试运行您的代码的简短版本,但出现错误:

openpyxl.utils.exceptions.InvalidFileException:openpyxl不支持 支持.xlsm的文件格式,请检查是否可以用Excel打开 第一。支持的格式有:.xlsx、.xlsm、.xltx、.xltm

很可能您的文件格式不受支持。尝试以
xlsx
格式重新保存文件。我认为问题在于宏:如果你的文件中没有宏,那么改变格式应该不会有任何问题。如果您有,我不确定openpyxl是否会以这种方式工作(至少没有任何解决方法)


也许会有帮助。它建议提取
xlms
文件(它们是zip文件),处理表示工作表格式的文件(而不是宏),然后将所有内容重新组合在一起。

一个错误可能是,文件路径变量要求对\

因此,正确的版本应该是

file1=“C:\\Users\\Desktop\\file1.xlsm”
file2=“C:\\Users\\Desktop\\file2.xlsm”

file3=“C:\\Users\\Desktop\\file3.xls”

一个错误可能是,文件路径变量要求对\

因此,正确的版本应该是

file1=“C:\\Users\\Desktop\\file1.xlsm”
file2=“C:\\Users\\Desktop\\file2.xlsm”

file3=“C:\\Users\\Desktop\\file3.xls”

您打开file1和file2-您在哪里打开file3-除非您打开该文件,或者您想将activesheet保存到file3,如果需要另存为…我想将file1另存为新文件3。那么,行“wb2.save(file3)”是否不正确?据我所知,您只是在保存file3,但它没有一个file3。。。您可以保存文件1或执行另存为文件3…好的,所以我必须将文件1另存为文件3。你能告诉我代码的确切语法吗?或者告诉我在哪里可以找到它?“wb1.saveas(file3)”不起作用。我不使用openpyxl,但我只是查询您的逻辑,希望它能帮助您了解您正在尝试做的事情。我的评论基于我在vba中处理创建200个文件以供反馈时如何处理它(以及如何处理)。您打开文件1和文件2-您在哪里打开文件3-除非您打开该文件,或者您想将activesheet保存到文件3,如果需要另存为…我想将文件1另存为新文件3。那么,行“wb2.save(file3)”是否不正确?据我所知,您只是在保存file3,但它没有一个file3。。。您可以保存文件1或执行另存为文件3…好的,所以我必须将文件1另存为文件3。你能告诉我代码的确切语法吗?或者告诉我在哪里可以找到它?“wb1.saveas(file3)”不起作用。我不使用openpyxl,但我只是查询您的逻辑,希望它能帮助您了解您正在尝试做的事情。我的评论是基于当我创建200个反馈文件时,我在vba中如何处理它(以及如何处理它)。看起来你有一个打字错误。XLSM是受支持的,但如果您没有保存宏,则在保存它们以使用XLSX时必须小心,否则,XLSM将拒绝打开它们。键入是什么意思?请查看例外情况。openpyxl将很乐意尝试读取.xlsm文件,这样您就不会看到异常。看起来您有输入错误。XLSM是受支持的,但如果您没有保存宏,则在保存它们以使用XLSX时必须小心,否则,XLSM将拒绝打开它们。键入是什么意思?请查看例外情况。openpyxl将很乐意尝试读取.xlsm文件,这样您就不会看到这种异常。