javascript window.open を呼び出して URL を .xls ファイルに渡すと、一部のマシンのブラウザ ウィンドウでファイルが開きます。どうすればExcelに強制できますか?
11 に答える
ユーザーのマシンだけがそれを Excel に「強制」できます。つまり、正しい MIME タイプを送信し、ユーザーが Excel を使用している場合、99% の確率で、ユーザーが承認したと仮定して Excel で開くことができます。
そして、サーバーだけが正しい MIME タイプを送信できます。JavaScript の window.open 呼び出しに渡すドキュメント タイプは、これには影響しません。実際、window.open を呼び出すと、余計なウィンドウが開くだけです。
でドキュメントにリンクするのが最善<a href="foo.xls">
です。また、サーバーが の MIME タイプを送信している場合、application/x-excel
またはapplication/x-msexcel
これにより、ほとんどの場合、ブラウザが Excel ドキュメントで新しいウィンドウを開くようになります。
それが単なる静的ファイルであり、Linux で Apache を使用している場合は、/etc/mime.types というファイルを確認し、.xls ファイル拡張子を正しい MIME タイプに関連付けるために次の行があることを確認します。 :
application/vnd.ms-excel xls
そのファイルの場所はシステムによって異なる可能性があると推測していますが、RHEL4 を実行しているサーバーの /etc/mime.types にあります。
- http コンテンツ タイプを Excel データ型に設定します: application/vnd.ms-excel
- 新しいウィンドウにリダイレクトする必要はありませんが、ユーザーにファイルを保存するか開くかを尋ねるポップアップが表示されます。
- (2) に関して: ブラウザーが外部アプリケーションを起動し、ユーザーの介入なしに自動的にデータをロードできるか心配です。
これは各ユーザーのブラウザの設定であり、コードで設定できるものではありません。残念ながら、あなたはそれを制御することはできません。
これはLaunchinIEを使用して行うことができます。これは、HTML ページがクライアントのマシン上の任意のアプリケーションをセキュリティ警告なしで起動できるようにする ActiveX コントロールです。
サイトからの引用: 「ついに、Web ページは Word、Excel、またはその他の企業アプリケーションを問題なく起動できるようになりました。安全に。」
このためには、ユーザー マシンにコントロールをインストールし、ローカル アプリケーションの実行を許可する URL を Windows レジストリに追加する必要があります。
このサイトからの別の引用: 「セキュリティを確保するために、LaunchinIE はクライアント側で慎重に構成する必要があります。この制限により、イントラネットでの使用にのみ適しています。」
私はトレーニング施設で LaunchinIE を使用しているため、ユーザーがマシンのセットアップを選択できるメニューとして Internet Explorer を使用できます。LaunchinIE は次に、選択したトレーニングを最適にサポートするようにマシンを構成するバッチ スクリプトを呼び出します。
保存した Excel ファイルを開くときに、このポップアップを元に戻す手順は次のとおりです。
- Windows の [START] ボタンを右クリックし、Explore を選択して Windows Explorer ウィンドウを開きます。
メニューから [ツール] → [フォルダ オプション...] を選択します。<br> • [ファイル タイプ] タブを選択し、ファイルのリストを下にスクロールします。
• 左クリックして XLS Microsoft Excel ワークシート ファイル拡張子を強調表示し、[詳細設定] ボタンをクリックします。[ファイルの種類の編集] ウィンドウで、[同じウィンドウで参照] オプションのチェックを外します。
[OK] ボタンをクリックして、変更を受け入れます。
新しいブラウザ セッションを開始します。次に受信トレイで Excel スプレッドシートを開くと、次のウィンドウが表示されます。「この種類のファイルを開く前に常に確認する」にチェックを入れたままにします。[開く] ボタンをクリックすると、Excel でファイルが開きます。
クライアントマシンに依存するため、できません。
たとえば、Windows でブラウザー ウィンドウではなく、常に Excel で開くようにするには、[マイ コンピューター]、[ツール]、[フォルダー オプション]、[ファイルの種類] を開き、XLS の種類を選択して、[詳細設定] をクリックする必要があります。2 つのチェックボックスがあります: 同じウィンドウで閲覧する と Web ドキュメントをその場で開く. 両方のチェックを外し、ブラウザ ウィンドウを閉じてから、もう一度開いて、もう一度試してください。
しかし、私が言ったように、それはクライアント次第であり、強制することはできません.
知る限り、JavaScript だけではこれを行うことはできません。サーバー側にある種のスクリプト言語がある場合は、ヘッダーを変更してダウンロードを強制できます。
これは PHP での簡単なチュートリアルですが、お好みの言語で簡単に見つけることができます。
Excelに強制することはできません。ブラウザがそのように構成されている方法で処理できるようにするか、強制的にファイルをダウンロードして、ユーザーがデスクトップから開くようにすることができます。ダウンロードを強制するには、「強制ダウンロード」とサーバー側の言語 (PHP、ASP.NET、JSP など) を検索します。
セキュリティ上の理由から、Javascript を使用して外部プログラムを呼び出すことはできません。ユーザーが Excel をインストールしていると仮定すると、アドレス バーなしで新しいウィンドウを開いて、ファイルが Internet Explorer の Excel で開かれているという "錯覚" をユーザーに与えることができます。
セキュリティ上の問題により、javascript からこれが可能だとは思いません。不正な Web ページが何十もの Excel/Word インスタンスを開くのを止める方法はありません。
.xls の URL へのハイパーリンクを設定できませんでした。そうすれば、ユーザーはファイルを表示するための通常のダウンロード プロンプトを取得できます。