我在源文件夹(*.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
。
我不明白为什么,我试图更改第三个文件的扩展名,但是*.xlsx
和*.xlsm
都显示了此问题。我也试图删除线部分
sheet1["A1"].value = sheet2["A1"].value
了解问题是否与工作表的写作有关,但问题仍然存在。
我希望我已经足够清楚地解释了这个问题,并且有人可以帮助我。
谢谢。
答案 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"