我正在尝试处理一些应该是xls文件的文件,但事实证明它们是别的东西(根据我在python-excel板上收到的一些帮助,这些是Web存档文件或(单文件网页)( * .mht,* .mhtml))。我可以用Excel打开文件,但是我得到一条消息,在我可以向前移动之前必须被解雇。消息是 - 你试图打开filename.xls的文件在文件扩展名指定的格式不同。在打开文件之前,请确认文件未被清除且来自可信源。是否要打开文件?
如果我点击是,则文件打开,它看起来像一个excel工作簿。某些工作表名称被截断。果然,当我点击“保存”时,显示的默认格式是单个文件网页。
现在,如果我SaveAs并选择excel 97-2003格式,重命名为我的新名称并点击保存按钮,然后该文件随Excel打开,以后没有问题。
我一直在试图弄清楚如何编写一些代码来打开并将这些代码保存为真正的xls文件,因此我不必让某人离岸打开并保存它们。
我已经非常接近,但最后一个问题仍然存在,当我用一个新的文件格式保存它时,我收到一个警告框警告我会有一些轻微的失真。我无法弄清楚如何压制它并接受失真的忠诚度?
以下是似乎有效的修补部分
import win32com.client
xl=win32com.client.Dispatch('Excel.Application')
xl.visible=0 # I have noticed that if I don't set visible to 0 I can't get any response
srce=xl.Workbooks.Open(r'c:\testdd.xls') # testdd is my file that is evidently really not an excel file
srce.SaveAs(r'c:\newtttxt2.xls',FileFormat=1) # this is when the message box pops up
我发现了一个名为CheckCompatibility的anattribute的引用。它似乎是工作簿对象的属性。我想我不能以
的形式使用它srce.CheckCompatibility='False'
是因为我没有保存srce对象我保存了某种类型的副本吗?
回到矿井。
错误希望当我尝试srce时,我没有成功.CheckCompatibility ='False'
对不起任何混淆
现在我比平时更加困惑这种行为很奇怪
srce=xl.Workbooks.Open(r'c:\testdd.xls') # I open the file
srce.CheckCompatibility='False' # I try to assign the attribute to srce
srce.SaveAs(r'c:\newtttxt7865.xls',FileFormat=1) #when I SaveAs the compatibility dialog asks if I want to continue
>>> 'asked' # I put this here to reinforce the fact that I was asked
'asked'
>>> srce.CheckCompatibility='False' # again I try to assign the attribute
>>> srce.SaveAs(r'c:\newtttxt78653.xls',FileFormat=1) # I try to save it again
>>> 'did not ask' #it saves this time w/o asking
'did not ask'
>>>
我想知道是否添加了make文件中描述的make.py文件,如果可以解决的话?我开始怀疑问题是srce还不知道它还有什么属性,它接受了赋值,但是在某些情况发生之前它还没有发挥作用?如果我听起来很愚蠢,那就没关系。
答案 0 :(得分:4)
请参阅我对your other question on this issue.
的回答第二次调用SaveAs(...)
时没有显示对话框的原因是第二次调用时文件格式没有变化,文件格式仅在第一次调用时发生变化。
你想要的是添加
>>> xl.DisplayAlerts = False
在致电SaveAs()
之前。