工作簿未在 js-xlsx 中定义
Workbook is not defined in js-xlsx
我使用 Js-xlsx API 将数据导出到 .xlsx file.I 已尝试使用 AngularJs 编写示例代码但我无法实现 it.It 抛出 Workbook is not defined
。我参考了 wiki,但我找不到 it.Please 帮助我任何人都知道如何使用 Js-xlsx 将数据列表写入 .xlsx 文件。
代码片段,
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.2/xlsx.core.min.js"></script>
...
<button ng-click="ExportData()">Export<button>
AngularJs 控制器
$scope.ExportData= function(){
var workbook=new Workbook();// throws not defined
$scope.dataArrayForExportCsv=[ {userName:data.userName, age:data.age} ];
workbook = sheet_from_array_of_arrays($scope.dataArrayForExportCsv);
XLSX.writeFile(workbook, 'sample.xlsx');
}
我能够参考以下 link.If you need to styling the .xlsx file you have to turn into its folk project called xlsx-style 解决它。当我写这个 post 分支没有合并到 xlsx master
。所以你必须下载必要的 JS 文件使用 npm。
将 jszip.js
和 xlsx.min.js
文件导入您的 HTML 文件并执行您的 coding.You 可以使用 Cell object
添加单元格样式。
示例单元格样式代码片段。
function sheet_from_array_of_arrays(data, opts) {
var ws = {};
var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }};
for(var R = 0; R != data.length; ++R) {
for(var C = 0; C != data[R].length; ++C) {
if(range.s.r > R) range.s.r = R;
if(range.s.c > C) range.s.c = C;
if(range.e.r < R) range.e.r = R;
if(range.e.c < C) range.e.c = C;
var cell = {};
//Set Header col styles
if(R <= 0){
cell = {
v: data[R][C],
s : {
fill : {
fgColor : {
theme : 8,
tint : 0.3999755851924192,
rgb : '7DCEA0'
}
},
font : {
color : {
rgb : "FFFFFF"
},
bold : true,
sz : "14"
}
}
};
} else if (data[R][C] == "SUCCESSFUL") {
//You can check any conditions on text and add styles you wanted.
}else{
//Set other cells styles
cell = {
v : data[R][C],
s : {
fill : {
fgColor : {
theme : 8,
tint : 0.3999755851924192,
rgb : '08CB26'
}
},
font : {
color : {
rgb : "FFFFFF"
},
bold : true
},
border : {
bottom : {
style : "thin",
color : {
theme : 5,
tint : "-0.3",
rgb: "E8E5E4"
}
}
}
}
};
}
if(cell.v == null) continue;
var cell_ref = XLSX.utils.encode_cell({c:C,r:R});
if(typeof cell.v === 'number') cell.t = 'n';
else if(typeof cell.v === 'boolean') cell.t = 'b';
else if(cell.v instanceof Date) {
cell.t = 'n'; cell.z = XLSX.SSF._table[14];
cell.v = datenum(cell.v);
}
else cell.t = 's';
ws[cell_ref] = cell;
}
}
设置列宽
var wscols = [ {
wch : 40
}, {
wch : 40
}, {
wch : 20
}, {
wch : 20
}, {
wch : 40
}, {
wch : 40
}, {
wch : 20
}, {
wch : 20
}, {
wch : 20
}, {
wch : 20
}, {
wch : 20
}, {
wch : 40
}, {
wch : 40
} ];
ws = sheet_from_array_of_arrays(myRestData);
ws['!cols'] = wscols;
...
我使用 Js-xlsx API 将数据导出到 .xlsx file.I 已尝试使用 AngularJs 编写示例代码但我无法实现 it.It 抛出 Workbook is not defined
。我参考了 wiki,但我找不到 it.Please 帮助我任何人都知道如何使用 Js-xlsx 将数据列表写入 .xlsx 文件。
代码片段,
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.2/xlsx.core.min.js"></script>
...
<button ng-click="ExportData()">Export<button>
AngularJs 控制器
$scope.ExportData= function(){
var workbook=new Workbook();// throws not defined
$scope.dataArrayForExportCsv=[ {userName:data.userName, age:data.age} ];
workbook = sheet_from_array_of_arrays($scope.dataArrayForExportCsv);
XLSX.writeFile(workbook, 'sample.xlsx');
}
我能够参考以下 link.If you need to styling the .xlsx file you have to turn into its folk project called xlsx-style 解决它。当我写这个 post 分支没有合并到 xlsx master
。所以你必须下载必要的 JS 文件使用 npm。
将 jszip.js
和 xlsx.min.js
文件导入您的 HTML 文件并执行您的 coding.You 可以使用 Cell object
添加单元格样式。
示例单元格样式代码片段。
function sheet_from_array_of_arrays(data, opts) {
var ws = {};
var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }};
for(var R = 0; R != data.length; ++R) {
for(var C = 0; C != data[R].length; ++C) {
if(range.s.r > R) range.s.r = R;
if(range.s.c > C) range.s.c = C;
if(range.e.r < R) range.e.r = R;
if(range.e.c < C) range.e.c = C;
var cell = {};
//Set Header col styles
if(R <= 0){
cell = {
v: data[R][C],
s : {
fill : {
fgColor : {
theme : 8,
tint : 0.3999755851924192,
rgb : '7DCEA0'
}
},
font : {
color : {
rgb : "FFFFFF"
},
bold : true,
sz : "14"
}
}
};
} else if (data[R][C] == "SUCCESSFUL") {
//You can check any conditions on text and add styles you wanted.
}else{
//Set other cells styles
cell = {
v : data[R][C],
s : {
fill : {
fgColor : {
theme : 8,
tint : 0.3999755851924192,
rgb : '08CB26'
}
},
font : {
color : {
rgb : "FFFFFF"
},
bold : true
},
border : {
bottom : {
style : "thin",
color : {
theme : 5,
tint : "-0.3",
rgb: "E8E5E4"
}
}
}
}
};
}
if(cell.v == null) continue;
var cell_ref = XLSX.utils.encode_cell({c:C,r:R});
if(typeof cell.v === 'number') cell.t = 'n';
else if(typeof cell.v === 'boolean') cell.t = 'b';
else if(cell.v instanceof Date) {
cell.t = 'n'; cell.z = XLSX.SSF._table[14];
cell.v = datenum(cell.v);
}
else cell.t = 's';
ws[cell_ref] = cell;
}
}
设置列宽
var wscols = [ {
wch : 40
}, {
wch : 40
}, {
wch : 20
}, {
wch : 20
}, {
wch : 40
}, {
wch : 40
}, {
wch : 20
}, {
wch : 20
}, {
wch : 20
}, {
wch : 20
}, {
wch : 20
}, {
wch : 40
}, {
wch : 40
} ];
ws = sheet_from_array_of_arrays(myRestData);
ws['!cols'] = wscols;
...