2013-10-16 15 views
9

エクスポートHTMLテーブルの.xlsファイルにjavascriptコードを使用しています.cromeで動作しますが、データが大きくない場合、データが大きい場合はエラーが表示されます大容量のデータをエクスポートすると.xlsファイルとしてエクスポートされない

enter image description here

私は.xlsファイルとしてエクスポートのためにテーブルを使用しているコードは以下の通りです:

function exportDiv() { 
    //working on crome perfectly  
     var dt = new Date(); 
     var day = dt.getDate(); 
     var month = dt.getMonth() + 1; 
     var year = dt.getFullYear(); 
     var hour = dt.getHours(); 
     var mins = dt.getMinutes(); 
     var postfix = day + "." + month + "." + year + "_" + hour + "." + mins; 
     var a = document.createElement('a'); 
     var data_type = 'data:application/vnd.ms-excel'; 
     var table_div = document.getElementById('tbl-1'); 
     var table_html = table_div.outerHTML.replace(/ /g, '%20'); 
     a.href = data_type + ', ' + table_html; 
     a.download = 'exported_table_' + postfix + '.xls'; 
     a.click(); 
     e.preventDefault(); 

} 

私はそのていないメモリ制限の問題を考えるように、私はまた、十分な4ギガバイトのRAMを持っています。

大きなデータをエクスポートする方法を教えてください。 編集:私はこの方法も

var table_html=encodeURIComponent(table_div.outerHTML); 

しかし、まだ同じエラー来るを使用ahve。

+0

は、あなたの質問に答えていないが、あなたの代わりに[ 'encodeURIComponentで()'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent)を利用することができますあなた自身の特殊文字を置き換える。 – Passerby

+0

無限ループになっていると思います。 –

+0

@Arun Killu:この関数が呼び出されてから、テーブルを.xlsファイルとしてダウンロードするだけで無限ループがどこにありますか? – user1181940

答えて

0

私は以下のようにボタンクリックでtableToexcel関数を呼び出しましたが、それはfirefixで正常に動作しています。

<a id="dlink" style="display:none;"></a> 

    var tableToExcel = (function() { 
      var uri = 'data:application/vnd.ms-excel;base64,' 
      , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>' 
      , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) } 
      , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) } 
      return function (table, name, filename) { 
       if (!table.nodeType) table = document.getElementById(table) 
       var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML } 

       document.getElementById("dlink").href = uri + base64(format(template, ctx)); 
       document.getElementById("dlink").download = filename; 
       document.getElementById("dlink").click(); 

      } 
     })(); 
1

Excelシートには、Excelセルと同じ32767文字の文字制限があります。参照チェックのため

このリンク:http://office.microsoft.com/en-in/excel-help/excel-specifications-and-limits-HP010073849.aspx

+0

これはExcelファイルではなく、Excelで開くことができる* .htmファイルです。拡張子とファイル形式の不一致について警告します。 – Arnthor

+0

ワークシートは1,048,576行×16,384列を持っています。私は3500行と30列のテーブルを持っています。私はそれが私にexlodeを口にしないと思います。 – user1181940

1

あなたがChromeで2メガバイトのURLの制限をヒットした中で最も可能性が高いです。あなたはそれについてここで読むことができます - issue link。私はあなたがFirefoxであなたのアプリを試してみることをお勧めします、それが動作する場合、それは問題です。

+0

しかし、私のコードはfirefox.When私はエクスポートボタンをクリックして何もしませんで動作しません。私はまた、エラーログをチェックしてもエラーはありません。 – user1181940

+0

ありがとうございます、あなたの右のFirefoxは大丈夫です。 –

関連する問題