Python-openpyxl-无法打开创建的Excel文件

时间:2019-03-05 08:12:27

标签: python excel openpyxl

我在源文件夹(*.xlsm)中有一个Excel源文件,还有一个包含一些数据的文件(也*.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)

代码似乎正常,并且没有返回任何错误,但是我无法打开创建的file3

image

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

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

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

我希望我已经足够清楚地解释了这个问题,并且有人可以帮助我。

谢谢。

2 个答案:

答案 0 :(得分:0)

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

也不清楚您想要什么:您要创建file3吗?有什么信息?您的代码没有执行任何操作。

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

  

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

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

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

答案 1 :(得分:0)

一个错误可能是\\ p的文件路径变量需要unicode转义。

因此:正确的版本应该是

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