Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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
将excel文件导入和导出到javascript数组_Javascript_Excel - Fatal编程技术网

将excel文件导入和导出到javascript数组

将excel文件导入和导出到javascript数组,javascript,excel,Javascript,Excel,我目前正在寻找一种快速有效的方法,将excel文件导入javascript数组,并将其导出。我在这里尝试过这个建议: 但问题是检查控制台时,它显示输出是对象,所以它们是JSON对象?是因为我的excel文件有多个列吗?在这种情况下,我如何才能做到这一点:( 我也需要一种方法来做同样的事情,但是相反的方法。有人能给我一些建议吗 谢谢大家! 编辑:我想出了导入的办法,但现在我被困在如何输出到excel的问题上。我需要一些单元格按照规则进行着色。有人能给我一些指导吗?这是一个更灵活的gridExpo

我目前正在寻找一种快速有效的方法,将excel文件导入javascript数组,并将其导出。我在这里尝试过这个建议:

但问题是检查控制台时,它显示输出是对象,所以它们是JSON对象?是因为我的excel文件有多个列吗?在这种情况下,我如何才能做到这一点:(

我也需要一种方法来做同样的事情,但是相反的方法。有人能给我一些建议吗

谢谢大家!


编辑:我想出了导入的办法,但现在我被困在如何输出到excel的问题上。我需要一些单元格按照规则进行着色。有人能给我一些指导吗?

这是一个更灵活的gridExportToExcel()示例函数,您可以在其中对单元格进行着色和格式化。可能需要先更改它,然后才能直接运行它

存储在具有以下列的网格变量中的所有数据:

  • grid.data-对象数组
  • grid.columns-列对象数组
    • 类型-“数字”-用于数字数据类型
    • kindid-子类型,如“money”或date
这段代码使用了库的一些函数

$(函数(){
window.gridExportToExcel=(函数(){
var a=document.createElement(“a”);
文件.正文.附件(a);
a、 style=“显示:无”;
返回函数(){
var s=gridGenerateExcel();
var blob=new blob([s],{type:'application/vnd.ms excel'});
url=window.url.createObjectURL(blob);
a、 href=url;
a、 下载=page.pagename+“.xls”;
a、 单击();
window.URL.revokeObjectURL(URL);
};
}());
});
函数gridGenerateExcel(标题){
如果(u.isUndefined(title))title=“Sheet1”;
var s='1〕\
\
';
s+='';
grid.columns.forEach(函数(col){
s+='';
});
s+='';
grid.columns.forEach(函数(col){
s+=''+列名称+'';
});
s+='';
_.forEach(网格、数据、函数(d){
s+='';
grid.columns.forEach(函数(col){
var值=d[col.id];
s+='';
如果(u.isUndefined(value)| | u.isNull(value)){
s+='';
}else if(col.kindid==“日期”){
s+=力矩(值).format('DD.MM.YY');
}else if(col.kindid==“money”){
s+=格式货币(固定价值(2));
}else if(列类型==“数值”){
s+=value.toString();
}否则s+=d[col.id];
});
});
s+='';
返回s;
}

试试这个,它安静高效

var workbook = XLSX.read(data, {
        type: rABS ? 'binary' : 'array',
        WTF: 1,
        header: 1 });
    console.log(workbook.Strings);

这是我用来获取对象数组的东西

看看d3,它有多个csv解析器。另一个选项是jquery csvThanks,但我如何将它从jquery csv转换回javascript数组?我没有这样做,只是碰巧我的一位同事今天与我分享了这个。你可能想看看它().Do a
console.log('parsed data',data)
并检查数据结构。它可能会为您提供更好的提示。我已经让它转换为多维数组,但现在我正在尝试做相反的事情,即输出到excel文件。一些单元格需要用不同的颜色填充,而一些单元格需要用粗体、彩色或e你知道我是如何做到这一点的吗?非常感谢你的回复。你能给我一个网格变量的例子吗?例如,如果我有一个像
[[a,b,c],[d,e,f],[g,h,I]]这样的数组
,我应该输入什么来获取网格变量?如果我想根据单元格位置单独设置单元格格式?即A1是粗体的,B2不是,等等。var grid={data:[{a:1,b:one},{a:2,b:two}],columns:[{id:'a',kindid:'int',type:'number'},{id:'b',kindid:'string',type:'string'};要给特定的单元格着色,您需要检查循环中的x和y变量,例如:grid.data.forEach(函数(d,y){grid.columns.forEach(函数(col,x}{if(x==3&&y==4}/*change style*/}));您知道我将其从上面的数组形式转换为您的对象列表的最佳方法是什么吗?var data=[];arr.forEach(函数(row){var r={};row.forEach(函数(v,idx){r[idx]=v};data.push(r)});var列=[];for(var i=0;i)
var workbook = XLSX.read(data, {
        type: rABS ? 'binary' : 'array',
        WTF: 1,
        header: 1 });
    console.log(workbook.Strings);