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