是否可以使用任何 HTML5 幻想将本地存储导出到 Excel?

IT技术 javascript excel html local-storage
2021-02-16 15:03:40

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

2个回答

我认为您误解了您链接到的问题的答案,建议您使用数据 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 编码器

不错的概念,我想我记得读过关于 SGML/HTML 规范中字符限制相当低的属性。sharovatov.wordpress.com/2008/05/13/data-uri-browser-issues有一些相关信息,但值得注意的是:“不同的浏览器支持的 dataURI 值的最大长度不同”
2021-04-18 15:03:40
@AlexMcp 也许这取决于您使用的 Excel 版本?我添加了我在 Excel 2007 中看到的屏幕截图
2021-05-01 15:03:40
您可以使用data:text/csv;charset=utf-8,content_encoded_as_url来避免对window.btoa& 的依赖,可以使用add download="test.csv",使用exportLink.setAttribute('download', 'test.csv');,向浏览器提供文件名。
2021-05-01 15:03:40
也适用于 Windows 7 的 Google Chrome,但浏览器不知道文件的类型,CSV因此不会自动将其与 Excel 关联,您必须四处寻找并告诉它使用哪个程序打开文件。
2021-05-04 15:03:40
有趣的。当我在 Excel 中打开结果时,我得到两个单元格,A1 ('2,1,4,3') 和 A2 ('1,2,3,4')。所以它识别行而不是列。感谢您的开始(并且您对链接的问题是正确的,这不是导出的正确答案)
2021-05-11 15:03:40

我不知道任何可以制作 Excel 文件的 Javascript 库。但是您可以简单地将其导出为 HTML 或 CSV - 请注意,Javascript 无法创建文件(尚),但 HTML 的工作草案可满足此要求:http : //www.w3.org/TR/file-writer-api/

Excel 非常擅长读取 HTML 中的表格,因此您可以简单地执行此操作并使用 Excel 打开 HTML 文件。

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

是的,这部分是为了避免用户需要本地服务器来从网络上获取数据的实验。显然这在 PHP 中是微不足道的,或者你有什么......
2021-04-28 15:03:40
如果您将注意力转移到服务器端,则可以输出您选择的自定义 MIME 类型。CSV 是一种将数据导出到 Excel 的简单方法。
2021-05-06 15:03:40
我正在考虑让用户复制/粘贴。这不是商业产品,只是实用程序,所以也许可以询问人们。我希望有一个 whizbang HTML5 API ......我不知道,做了魔术什么的......
2021-05-12 15:03:40