web-dev-qa-db-ja.com

Excelダウンロード時のファイル破損警告を抑制する方法は?

Excel 2007ワークシートにリンクするWebページがあります。それは .xlsファイルではなく.xlsxファイル。リンクをクリックすると、Excelファイルを開く/保存するための通常のダイアログボックスが表示されます。 「開く」をクリックすると、次の警告メッセージが表示されます-

開こうとしているファイル 'filename.xls'は、ファイル拡張子で指定されたものとは異なる形式です。ファイルを開く前に、ファイルが破損しておらず、信頼できるソースからのものであることを確認してください。今すぐファイルを開きますか?

この警告メッセージをプログラムでどのように抑制できますか(つまり、非表示にするか、表示されないようにしますか?)Web開発にColdFusionを使用しています。

18
Arnkrishn

この問題は、Extension Hardeningと呼ばれる機能が原因で発生します。詳細については、こちらをご覧ください here

私はプロジェクトでこの問題に何度も遭遇しましたが、Jonが言ったように、Extension Hardeningをオフにすることは、各クライアント側ユーザーが実行する必要があることです。

残念ながら、上記のリンクには、少なくともOffice 14までこのコードに予期される変更はないことが記載されています。

10
Matthew Jones

解決策を探したくないが、問題を解決したいだけの場合は、このキーをレジストリに挿入して通知を抑制します。

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security]“ ExtensionHardening” = dword:00000000

以下を実行することにより、上記を実現できます。

  1. レジストリを開きます([スタート]-> [実行]-> regedit.exe)。
  2. HKEY_CURRENT_USER\SOFTWARE\Microsoft\OFFICE\12.0\Excel\SECURITYに移動します
  3. 右側のウィンドウで右クリックし、[新規]-> [DWORD]を選択します。
  4. 名前として「ExtensionHardening」と入力します(引用符なし)。
  5. データの値が「0」であることを確認します
19
jgallant

古いExcel形式(.xls)

次の構文でスプレッドシートオブジェクトを作成するとします。

<cfset sheet = SpreadsheetNew() /> 

これを使用してダウンロードを作成します。

<cfheader name="content-disposition" value="attachment;filename=my_spreadsheet.xls">
<cfcontent type="application/vnd.ms-Excel" variable="#spreadsheetReadBinary(sheet)#" reset="true">

新しいExcel形式(.xlsx)

次の構文でスプレッドシートオブジェクトを作成します。

<cfset sheet = SpreadsheetNew("", "true") />

これを使用してダウンロードを作成します。

<cfheader name="content-disposition" value="attachment;filename=my_xml_spreadsheet.xlsx">
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadsheetReadBinary(sheet)#" reset="true">

これの大部分を Raymond Camden に感謝します(この例は、古い形式でスプレッドシートを作成するためのものでした-新しい形式に更新し、わずかに異なるMIME値を使用しました)。

2
geekmuse

私は同じ種類の問題を抱えており、クライアントはそれについて不平を言っていました。私はググリングをたくさんしましたが運はありませんでした。最後に、cfspreadsheetを使用してスプレッドシートを作成しました。HTMLを介して直接作成するよりも追加の作業が必要であることはわかっていますが、警告は削除されます。

0
Pritesh Patel

ユーザーから隠すことはできないと思います。これらの種類の警告は、ブラウザの外部にあります。

0
fmsf

メッセージは、ファイルの内容とファイル拡張子が一致しないことを示唆しています。そのため、それはXLSXファイルであるか、サーバー上の現在のファイルが何らかの方法で壊れています。 Zipツールでファイルを開くことをお勧めします。それが機能する場合、それは実際にはXLSX形式のファイルです。次に、ファイルの名前を変更して警告を修正できます。

そうでない場合、ファイルに何かが起こりました。

しかし、どちらにしても、警告を抑制することは問題の解決策ではありません。次にウイルスがやって来て、顧客にnakedgrls.gif.exe、セキュリティ設定をいじらないほうがよい。

0
Aaron Digulla

ファイル拡張子を指定していない場合は、おそらくコンテンツタイプが "application/vnd-Excel"の.cfmファイルとして名前が付けられているため、この警告が発生します。

ファイル出力が始まる前にこれを追加してみてください:

<cfheader name="Content-Disposition" value="attachment;filename=myexcelfile.xls">
<cfcontent type="application/ms-Excel" reset="true">
0
eapen

便利なcfcontentトリックを使用してExcelファイルとして出力している場合は、cfx_query2Excelを使用することを検討してください。これにより、実際のExcelファイルが作成され、これを通過できます。これはJavaライブラリであり、価値がありました。

幸運を祈ります。

0
Jas Panesar