3

この問題に密接に関連する問題があります。 Microsoft Excel エラー: 「コマンドをプログラムに送信中に問題が発生しました。」Excelを開くとThere was an error sending a command to the programエラーが発生します。

ただし、ファイルが存在して開かれている、またはショートカットされているのではなく、一連 のデータを生成し、 ( NPOIを使用して) Excel ファイルを生成し、それを MemoryStream に書き込み、それをブラウザーにチャックするアクションで MVC3 を使用しています。組み込みのActionResult を使用して、これに似たものを使用します (ただし、読みやすくするためにここでは短縮されています)。return File(etc)

return File(myMemoryStream, "application/vnd.ms-excel", "filename.xls");

このアクションを起動してこのファイルを返すリンクを初めてクリックすると、エラーが発生します。[OK] を押してもう一度試すと、機能し、引き続き機能します... 永遠に

これは、 DDE/プラグインまたはExcelで何かを無効にすることと関係がある可能性があることを知っています-しかし、ファイルシステムに永続的に存在するものを開くのではなく、Excelワークブックを生成してメモリストリームにダンプしているため、私は問題を解決するために必要なオプションがわかりません。

それを回避する方法について何か提案はありますか?おそらく私は間違ったMIMEタイプを持っていますか?

4

1 に答える 1

1

Content-Type アプリケーション/vnd.ms-excel は、コマンドをブラウザーに送信して、ブラウザーでファイルを開きます。これが問題の原因になる可能性があります。コンテンツ タイプを application/x-msexcel に設定してみてください。

あなたの例では、ブラウザーはブラウザーで Excel スプレッドシートを開こうとします (ユーザーが Excel をインストールしている場合)。

return File(myMemoryStream, "application/vnd.ms-excel", "filename.xls")

次の変更を行ってください

return File(myMemoryStream, "application/x-ms-excel", "filename.xls")
于 2011-07-03T17:38:55.427 に答える