如何通过Javascript生成Excel

时间:2008-12-02 10:13:52

标签: javascript excel

有没有办法通过Javascript生成Excel / CSV? (它也应该与浏览器兼容)

6 个答案:

答案 0 :(得分:43)

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文件的简单指令”。

答案 1 :(得分:30)

如果您可以在服务器上生成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);

您可以使用以下代码生成该文本的网址:

window.URL = window.URL || window.webkiURL;
var blob = new Blob([csv]);
var blobURL = window.URL.createObjectURL(blob);

最后,这将添加一个下载该数据的链接:

$("#downloadLink").html("");
$("<a></a>").
attr("href", blobURL).
attr("download", "data.csv").
text("Download Data").
appendTo('#downloadLink');

答案 2 :(得分:7)

类似的答案发布了here

working example

的链接
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]]);

需要主要图书馆 -

<script src="http://alasql.org/console/alasql.min.js"></script> 
<script src="http://alasql.org/console/xlsx.core.min.js"></script> 

答案 3 :(得分:2)

创建一个AJAX回发方法,该方法将CSV文件写入您的网络服务器并返回网址。在浏览器中将隐藏的IFrame设置为服务器上CSV文件的位置。

然后,您的用户将看到CSV下载链接。

答案 4 :(得分:0)

用一个有效的例子回答你的问题:

<script type="text/javascript">
function DownloadJSON2CSV(objArray)
{
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

    var str = '';

    for (var i = 0; i < array.length; i++) {
        var line = new Array();

        for (var index in array[i]) {
           line.push('"' + array[i][index] + '"');
        }

        str += line.join(';');
        str += '\r\n';
    }
    window.open( "data:text/csv;charset=utf-8," + encodeURIComponent(str));
}
</script>

答案 5 :(得分:-1)

我建议您生成一个开放格式的XML Excel文件,比CSV更灵活 阅读Generating an Excel file in ASP.NET了解更多信息