1

xlsファイルであるはずのいくつかのファイルを処理しようとしていますが、それらは別のものであることがわかりました(python-excelボードで受け取ったヘルプによると、これらはWebアーカイブファイルまたは(単一ファイルWebページ(* .mht 、*。mhtml))。Excelでファイルを開くことはできますが、先に進む前に閉じる必要があるというメッセージが表示されます。メッセージは次のとおりです。filename.xlsを開こうとしているファイルの形式が異なります。ファイル拡張子で指定します。ファイルを開く前に、ファイルが不正であり、信頼できるソースからのものであることを確認してください。ファイルを開きますか?

[はい]をクリックすると、ファイルが開き、Excelブックのように見えます。一部のシート名は切り捨てられます。案の定、[保存]をクリックすると、表示されるデフォルトの形式は単一ファイルのWebページです。

ここで、[名前を付けて保存]で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という属性への参照を見つけました。ブックオブジェクトの属性のようです。そして、私はそれを形で使うことができないと思います

srce.CheckCompatibility='False' 

srceオブジェクトを保存していないため、ある種のコピーを保存していますか?

鉱山に戻ります。

False Hope 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がまだどの属性を持っているかを知らず、割り当てを受け入れますが、何かが起こるまで機能しないということでしょうか?私が愚かに聞こえるならそれは大丈夫です。

4

1 に答える 1

7

この問題に関する他の質問に対する私の回答をご覧ください。

2 回目の呼び出しでダイアログ ボックスが表示されない理由は、2 回目の呼び出しSaveAs(...)ではファイル形式が変更されず、ファイル形式は最初の呼び出しでのみ変更されるためです。

あなたが欲しいのは追加することです

>>> xl.DisplayAlerts = False

電話する前にSaveAs()

于 2011-03-06T11:25:15.500 に答える