2012-01-04 6 views
4

私のASPページでは、JavaスクリプトによってIEでcsvファイルを開く必要があります。私が使用しているコードは次のとおりです。JavaScriptでIEのcsvファイルを開く方法

 

csvWindow = window.open("/com/csv/"+csvFileName, "datacsv", "toolbar=yes,location=no,directories=yes,status=no,menubar=yes,scrollbars=yes,resizable=yes,width=790,height=450,screenX=50,screenY=25,left=50,top=25"); 

コードはIISサーバーで実行されています。私はこのコードとオープンcsvファイルを実行すると

は、それがメッセージの下

 Microsoft Office Excel cannot access the file 
     "http://192.168.3.228:107/com/csv/CSV_file_1345728.csv". There are several possible reasons: 

     The file name or path does not exist 
the file is being used by another program 
the workbook you are trying yo save has the same name as a currently open workbook. 

なりますが、ファイルはcreated.Soパスであることは正しいことだと私は、ファイルが、別のプログラムで使用されていないと思い

私が何をすればいいのか教えてください。

+0

ファイルを呼び出しているときに、指定された場所にファイルが存在することを確認します(エラーメッセージのように)。そして、すべてがうまくいくはずです。 –

+0

@Baszz、イエスのファイルが場所にありますが、IEで同じURLを貼り付けたときに "http://192.168.3.228:107/com/csv/CSV_file_1345728.csv"と表示されます私は何が間違っているか、ファイルを開くための他の方法があります –

+0

あなたのcsvファイルの名前を変更しようとしましたか?つまり、単純な名前を付けて、特殊文字が含まれているかどうかを確認します。 – Soham

答えて

5

Excelが開かれると、2007年以来のオフィスアプリケーションの動作の変化であるCSVファイル自体がフェッチされるという問題があります。Excelは別のプロセスで実行されるため、クッキーを送信しないでください。ログオン中に生成されています。ウェブサイトがリクエストを受け取ると、401ステータスで応答します。

完全に満足のいく結果で私が知っている簡単な解決策はありません。ここにはいくつかの解決策がありますが、すべて欠点があります。

  • 認証Cookieを永続的にします。これにより、OfficeアプリケーションはCookieを取得して送信できます。クライアントマシンの再起動後も、(Stackoverflowの動作と同様に)ユーザがダウンしていることが永続的に記録されます。
  • "Basic"や "Negotiate"のような標準HTTP認証プロトコルを使用します。欠点は、これによりExcelにログオンボックスが表示され、ユーザーは再度ログオンする必要があることです。この欠点の例外の1つは、IEのイントラネットゾーンの一部としてサイトが登録されているIISボックスに対して「ネゴシエート」または「NTLM」を使用することです.Excelで使用されるHTTPスタックは現在のユーザー資格情報を使用しようとします。
  • 匿名で実行できるサーバー側のスクリプトにcsvファイルを送信し、URLにアクセスの許可を与えない一意のID(GUIDなど)を含めるようにしてください。セットアップがはるかに複雑です。
+0

IEはIEではなくMozila Firefoxで動作します。IE-7 –

+0

@ user571616:はい、FirefoxはWinINET mimeハンドラに注意を払わない独自のHTTPスタックを使用しているためです。したがって、CSVをダウンロードして、「このCSVコンテンツを処理したいのは誰ですか?」と尋ねます。一方、IEはWinINETを使用しており、ウィンドウとオフィスの両方で緊密に統合されているため、リクエストされているリソースがExcelに興味を持ち、Excel(または実際にはOffice)が要求を処理することをかなり早期に判断します。 – AnthonyWJones

3

あなたがMS Excelでファイルを開きたい場合は、直接ファイルを提供しないように試みることができる、しかし、Content-Type=application/force-download.cssで終わる実際のファイル名と実際のファイルの内容をASPページを作成します。この場合、MSIEは最初にローカルディスクキャッシュにファイルをダウンロードし、それをMS Excelに送ります。

CSVテキストをブラウザウィンドウに表示するだけの場合は、拡張子を変更するか、またはContent-Type=text/plainのプロキシページを作成し、CSVはまったく記述しないことが最善の方法かもしれません。 CSV/Excelの関連付けは、MSIEでハードコードされているようです。

+0

は、MSIE –

+0

@ user571616からこのcsv/excelの関連付けを削除する方法です。そうは思わない。私はファイルの応答を提供する経験があり、例えば、* .xlsはMSIEがMS ExcelでContent-Typeと実際の内容にかかわらずいつでも開くことができます。 2000年以降、このハックにより、生成されたOffice HTMLページをバイナリのOfficeドキュメントのように開くことができます。 –

関連する問題