Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Win32com从Python中处理Excel消息框_Python_Excel_Messagebox_Win32com - Fatal编程技术网

使用Win32com从Python中处理Excel消息框

使用Win32com从Python中处理Excel消息框,python,excel,messagebox,win32com,Python,Excel,Messagebox,Win32com,我试图处理一些本应为xls文件的文件,但结果证明它们是其他文件(根据我在python excel板上收到的一些帮助,这些文件是Web存档文件或(单文件网页(*.mht,*.mhtml))。我可以使用Excel打开文件,但我收到一条消息,在我继续之前,该消息必须被取消。该消息是-您试图打开的文件filename.xls的格式与文件扩展名指定的格式不同。在打开该文件之前,请验证该文件是否正确且来源可靠。是否打开该文件档案 如果单击“是”,文件将打开,看起来像excel工作簿。某些工作表名称被截断。果

我试图处理一些本应为xls文件的文件,但结果证明它们是其他文件(根据我在python excel板上收到的一些帮助,这些文件是Web存档文件或(单文件网页(*.mht,*.mhtml))。我可以使用Excel打开文件,但我收到一条消息,在我继续之前,该消息必须被取消。该消息是-您试图打开的文件filename.xls的格式与文件扩展名指定的格式不同。在打开该文件之前,请验证该文件是否正确且来源可靠。是否打开该文件档案

如果单击“是”,文件将打开,看起来像excel工作簿。某些工作表名称被截断。果然,当我单击“另存为”时,显示的默认格式是单文件网页

现在,如果我将文件另存为并选择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'
>>> 
我想知道我是否按照com帮助中的描述添加make.py文件,是否可以解决这个问题?我开始想知道问题是否是srce不知道它有哪些属性,它接受分配,但直到某些情况发生后才开始使用它?如果我听起来很愚蠢,那没关系。

请查看我对的回答

第二次调用
SaveAs(…)
时,它没有显示对话框的原因是文件格式在第二次调用时没有更改,文件格式仅在第一次调用时更改

你想要的是添加

>>> xl.DisplayAlerts = False
在调用
SaveAs()

之前,请查看我对的回答

第二次调用
SaveAs(…)
时,它没有显示对话框的原因是文件格式在第二次调用时没有更改,文件格式仅在第一次调用时更改

你想要的是添加

>>> xl.DisplayAlerts = False
调用
SaveAs()
之前