web-dev-qa-db-ja.com

HTMLテーブルをExcelにエクスポートJavaScript関数addselect file name

HTMLをExcelにエクスポートする次の関数があります。

function generateexcel(tableid) {
  var table= document.getElementById(tableid);
  var html = table.outerHTML;
  window.open('data:application/vnd.ms-Excel,' + encodeURIComponent(html));
}

問題は、特定のファイル名を保存することができないため、ユーザーは次のようなものを取得することです。

%3Ctable%20id%3D%22tableRslts%22%20tabindex%3D%2235%22%20ファイルを保存しますか?

保存されたファイルは次のようになります。

IytvT8Jo.xls.part.xls(少なくとも、使用するターゲットブラウザであるFirefoxでは)

これをどのように修正しますか?

13
VSP

あなたが調べることができる2つのオプションがあります:

  • Filesaver API は、これを/正確に/許可する新しい「HTML5」機能です。小さな問題が1つだけあります。関連する部分は、Firefoxではまだサポートされていません。これを使用したい場合は、これを簡単にする素敵なラッパーライブラリがあります: filesaver.js
  • Downloadify は、まさにこのために作成されたフラッシュツールです。ここで見つけることができます。 (「デメリット」:フラッシュ)
3
David Mulder

あなたがすでにこれをしたかどうかはわかりません。あなたはあなたのaspxページで以下のようなものを扱う必要があるかもしれません:

$(window).load(function(){
$( "#clickExcel" ).click(function() {  
var dtltbl = $('#dtltbl').html();    `enter code here`
window.open('data:application/vnd.ms-Excel,' + $('#dtltbl').html());
});
});//]]>  

上記のスクリプトでは、#dtltblはテーブルIDです。

次のコードがサーバー側のコードに含まれている必要があります。そうすれば、問題は解決されます。

           Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
1