9

この質問は似ていますが、データをエクスポートする可能性を強調していません。考え?

4

2 に答える 2

28

リンク先の質問への回答を誤解していると思います。エクスポートにデータ URI を使用することを提案しています。

ファイル形式自体がバイナリ (または OOXML )であるため、Excel を対象とするのは少し複雑です。Excelで開くものだけが必要な場合は、より単純な CSV をデータ URI としてエクスポートできます。次のコードは少しラフで準備ができており、Firefox でのみテストされています。

function exportData() {
    var data = '';
    for (var i=1;i<=2;i++) {
        var sep = '';
        for (var j=1;j<=4;j++) {
            data +=  sep + document.getElementById(i + '_' + j).value;
            sep = ',';
        }
        data += '\r\n';
    }
    var exportLink = document.createElement('a');
    exportLink.setAttribute('href', 'data:text/csv;base64,' + window.btoa(data));
    exportLink.appendChild(document.createTextNode('test.csv'));
    document.getElementById('results').appendChild(exportLink);
}

ページのマークアップは次のとおりです。

<input type="number" id="1_1" value="2">,
<input type="number" id="1_2" value="1">,
<input type="number" id="1_3" value="4">,
<input type="number" id="1_4" value="3">
<br>
<input type="number" id="2_1" value="1">,
<input type="number" id="2_2" value="2">,
<input type="number" id="2_3" value="3">,
<input type="number" id="2_4" value="4">
<br>
<button onclick="exportData()">Export as CSV</button>
<div id="results"></div>

ここでデモ。ボタンをクリックするとリンクが表示され、リンクをクリックするとファイルが取得されます。値を変更し、リンクをもう一度クリックすると、別のファイルが取得されます。Firefox では、毎回 Excel を選択して開く必要がありましたが、それが私の構成なのか一般的な問題なのかわかりません。

Excel 2007 の CSV
(ソース: boogdesign.com )

私が言ったように、Firefox でのみテストされており、データ URIをサポートするブラウザでのみ動作します。window.btoa() 関数を使用するか、独自のbase64 エンコーダーを実装することも必要です。

于 2010-07-20T18:27:41.300 に答える
2

Excelファイルを作成できるJavascriptライブラリは知りません。ただし、単純に HTML または CSV としてエクスポートすることもできます。Javascript は (まだ) ファイルを作成できないことに注意してください。

Excel は HTML で作成された表を読み取るのに非常に優れているため、単純に HTML ファイルを読み取って Excel で開くことができます。

Downloadify を使用してダウンロード用のファイルを作成できます: https://github.com/dcneiner/Downloadify

于 2010-07-20T01:58:58.967 に答える