9

这个问题类似,但没有强调导出数据的任何可能性。想法?

4

2 回答 2

28

我认为您误解了您链接到的问题的答案,它建议您使用数据 URI 进行导出。

Excel 是一个有点复杂的目标,因为文件格式本身就是二进制(或 OOXML)。如果您只想要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 中测试过,它只能在支持Data URIs的浏览器中工作。您还需要window.btoa() 函数或实现自己的base64 编码器

于 2010-07-20T18:27:41.300 回答
2

我不知道任何可以制作 Excel 文件的 Javascript 库。但是您可以简单地将其导出为 HTML 或 CSV - 请注意 Javascript 不能生成文件(还),但 HTML 的工作草案可以满足这一点:http ://www.w3.org/TR/file-writer-api/

Excel 非常擅长阅读用 HTML 制作的表格,因此您可以简单地做到这一点并使用 Excel 打开 HTML 文件。

您可以使用 Downloadify 创建文件以供下载:https ://github.com/dcneiner/Downloadify

于 2010-07-20T01:58:58.967 回答