Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript导出Excel文件?_Javascript_Excel - Fatal编程技术网

如何使用JavaScript导出Excel文件?

如何使用JavaScript导出Excel文件?,javascript,excel,Javascript,Excel,有没有办法通过Javascript生成Excel/CSV? (它也应该是浏览器兼容的)创建一个AJAX回发方法,将CSV文件写入Web服务器并返回url。。将浏览器中的隐藏IFrame设置为服务器上CSV文件的位置 然后,您的用户将看到CSV下载链接。我建议您生成一个开放格式的XML Excel文件,它比CSV灵活得多。 阅读了解更多信息如果可以在服务器上生成Excel文件,这可能是最好的方法。使用Excel,您可以添加格式并使输出看起来更好。已经提到了几个Excel选项。如果你有一个PHP后端

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

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


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

我建议您生成一个开放格式的XML Excel文件,它比CSV灵活得多。

阅读了解更多信息

如果可以在服务器上生成Excel文件,这可能是最好的方法。使用Excel,您可以添加格式并使输出看起来更好。已经提到了几个Excel选项。如果你有一个PHP后端,你可以考虑。 如果您试图用javascript在客户机上完成所有操作,我认为Excel不是一个选项。您可以创建一个CSV文件并创建一个数据URL以允许用户下载它

我创建了一个JSFIDLE来演示:

此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”的标记):

您可以使用以下代码生成指向该文本的URL:

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');
$(“#downloadLink”).html(“”);
$("").
attr(“href”,blobURL)。
attr(“下载”,“data.csv”)。
文本(“下载数据”)。
附件(“#下载链接”);

用一个工作示例回答您的问题:

<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>

函数下载JSON2CSV(objArray)
{
var array=typeof objArray!=“object”?JSON.parse(objArray):objArray;
var-str='';
对于(var i=0;i
github上有一个有趣的项目,名为ExcelBuilder(.js) 它提供了一种下载Excelxlsx文件的客户端方式,并包括设置Excel电子表格格式的选项。

使用此库可能会遇到浏览器和Excel兼容性问题,但在适当的条件下,它可能非常有用

另一个github项目的Excel选项较少,但对Excel兼容性问题的担忧较少,可以在这里找到:ExcellentExport.js

如果您使用的是AngularJS,则有
“将数组和对象转换为可下载的CSV文件的简单指令”。

发布了类似的答案

链接

所需的主要图书馆-

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


不过有点傻——将数据传回服务器只是为了让服务器能够将数据直接送达用户。此外,生成的XLS可能相当大。(也许这就是作者希望在客户端生成该文件的原因?)也许也最好在服务器端生成XLS?唯一的缺点是您无法决定文件的调用。如果用户想轻松打开它,您必须依赖用户将其保存为*.csv。您可以在某些浏览器中使用HTML 5从Javascript生成csv下载:参见2015年的公认答案,有更多类似的库,2016年底有一个非常好的库(我尝试了Excel Builder,但在您尝试保存文件时确实出现了问题)Excel Builder(.js)不再维护。由于网站关闭,也没有相关文档。链接也不再工作。嘿,保存excel文件的行是什么?因为现在我有一个数组,我想将数组写入excel电子表格。@DeniseTan,保存功能由
alasql
处理,它在gene之后触发对文件进行分级。您的数据需要位于对象数组中(请参见我的示例).Object键是定义列名所必需的。您可以将数组转换为对象数组。请看示例。我尝试了这个库,但它在chromeextension中不安全。@gumuruh是否有您用来检查的特定插件/扩展?我找不到任何方法来检查这个插件的安全性。不,我的意思是当我们实现一些外部Java时在ChromeExtension工具中使用script,我们需要确保没有eval语句,并且我们必须将所有js文件嵌入到我们的项目中,而没有任何外部依赖项…啊,无论如何,…一旦您开发了ChromeExtension工具,您可能会知道。ok@SujitKumarSingh,ok?PHPExcel不推荐使用PhpSpreadsheet。
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>