web-dev-qa-db-ja.com

通常のHTMLリンクからExcelファイルを開く

現在、イントラネットで共有Excelシートへのリンクを配置したいという問題が発生しています。残念ながら、通常のhref="http:..."リンクは、サーバー自体にある共有シートでの作業を有効にする代わりに、自動的に開いてローカルマシンに保存します。

私はここを少し読んで、次のような解決策を見つけました:file://///SERVER/PATH/Excel.xlsしかし残念なことに、そのソリューションは何もしません。

該当する場合:私のサーバーバージョンはWindows Server 2012です

5
noa-dev

HTTPはステートレスプロトコルです。つまり、ユーザーがhttp経由でイントラネットからファイルをダウンロードすると、元のファイルではなくコピーがダウンロードされます。ユーザーが行った変更はコピーにのみ表示され、同じワークブックのコピーがロードされて、変更が異なる可能性があります。あなたはそれを望まない!

また、...ユーザーはどのように変更をアップロードしますか?

ネットワーク上に共有フォルダーを作成し、そこにワークブックを配置する必要があります。次に、イントラネットのfile:///SERVER/PATH/FILE.xlsリンクで<a />形式を使用して、サーバー上の実際のファイルにユーザーを誘導できます。


file:///パス形式に慣れるために、デスクトップで簡単なHTMLドキュメントを作成することから始めることをお勧めします。例えば

<html>
    <head />
    <body>
        <a href="file:///SERVER/PATH/FILE.xls">Click</a>
    <body>
 <html>

これをメモ帳に保存し、拡張子を.txtから.htmlに変更します。

file:///パスを直接Windowsエクスプローラーのアドレスバーに入力して、上記のHTMLドキュメントに頼ることなくパスをテストすることもできます。

[〜#〜]残念ながら[〜#〜]!ブラウザーのデフォルトの動作は、リンクを開くのではなく(ローカルリソースであっても)常にダウンロードするようです。そのため、実際にリンクを開く場合は、ブラウザーのイントラネットのアクセス許可を変更して、JSがアクセスできるようにする必要があります。ローカルリソース。これにより、以下の手法を使用できます。


この記事( http://www.codeproject.com/Articles/113678/How-to-execute-a-Local-File-using-HTML-Application )は

<script type="text/javascript" language="javascript">
    function RunFile() {
    WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run("c:/windows/system32/notepad.exe", 1, false);
    }
</script>

メモ帳を開きます。 Excel.exeでコマンドライン引数を使用できます( https://support.office.com/en-za/article/Command-line-switches-for-Excel-321cf55a-ace4-40b3-9082-53bd4bc10725 )ファイルパスが何であるかを伝える...

Excel.exe "C:\PATH\Excel.xls"

Excelファイル(URL)の前にms-Excel:ofe | uを追加することで、ブラウザにExcel(インストールされている場合)を開くように指示できます。

<a href="ms-Excel:ofe|u|http:...xls">Open in Excel</a> 
6
user916867