有没有办法通过Javascript生成Excel/CSV?(也应该是浏览器兼容)
github上有一个名为Excel Builder(.js)的有趣项目,
它提供了一种下载Excel xlsx文件的客户端方式,并包含格式化Excel电子表格的选项.
https://github.com/stephenliberty/excel-builder.js
使用此库可能会遇到浏览器和Excel兼容性问题,但在适当的条件下,它可能非常有用.
演示似乎有一些承诺.
http://excelbuilderjs.com/index.html
另一个github项目具有较少的Excel选项,但对Excel兼容性问题的担忧较少,可在此处找到:ExcellentExport.js
https://github.com/jmaister/excellentexport
如果您使用的是AngularJS,则有ng-csv:
一个"将数组和对象转换为可下载的CSV文件的简单指令".
如果您可以在服务器上生成Excel文件,那可能是最好的方法.使用Excel,您可以添加格式并使输出看起来更好.已经提到了几个Excel选项.如果你有PHP后端,你可以考虑使用phpExcel.
如果你试图用javascript在客户端上做所有事情,我不认为Excel是一个选项.您可以创建CSV文件并创建数据URL以允许用户下载它.
我创建了一个JSFiddle来演示:http: //jsfiddle.net/5KRf6/3/
这个javascript(假设您正在使用jQuery)将从表中的输入框中取出值并构建CSV格式的字符串:
var csv = ""; $("table").find("tr").each(function () { var sep = ""; $(this).find("input").each(function () { csv += sep + $(this).val(); sep = ","; }); csv += "\n"; });
如果您愿意,可以将数据放入页面上的标签中(在我的例子中是id为"csv"的标签):
$("#csv").text(csv);
您可以使用以下代码生成该文本的URL:
window.URL = window.URL || window.webkiURL; var blob = new Blob([csv]); var blobURL = window.URL.createObjectURL(blob);
最后,这将添加一个下载该数据的链接:
$("#downloadLink").html(""); $(""). attr("href", blobURL). attr("download", "data.csv"). text("Download Data"). appendTo('#downloadLink');
类似的答案贴在这里.
链接工作示例
var sheet_1_data = [{Col_One:1, Col_Two:11}, {Col_One:2, Col_Two:22}]; var sheet_2_data = [{Col_One:10, Col_Two:110}, {Col_One:20, Col_Two:220}]; var opts = [{sheetid:'Sheet One',header:true},{sheetid:'Sheet Two',header:false}]; var result = alasql('SELECT * INTO XLSX("sample_file.xlsx",?) FROM ?', [opts,[sheet_1_data ,sheet_2_data]]);
需要主要图书馆 -