我目前正在寻找一种快速有效的方法将excel文件导入javascript数组,并将其导出。我在这里尝试了这个建议:
https://stackoverflow.com/a/27474951/4346569
但问题是检查控制台,它显示输出是对象,所以他们是JSON对象?是因为我的excel文件有超过1列吗?在那种情况下,我怎么能这样做:(?
我还需要一种方法来做同样的事情,但方式相反。有人可以就此提出建议吗?
谢谢!
编辑:我想要导出但现在我仍然坚持如何能够输出到excel。我需要根据规则指定一些单元格。谁能给我一些指导呢?
答案 0 :(得分:0)
这是更灵活的gridExportToExcel()函数的示例,您可以在其中对单元格进行着色和格式化。可能需要先更改它才能直接运行它。
所有数据都存储在网格变量中,并带有以下列:
这些代码使用Lodash库的一些功能。
$(function() {
window.gridExportToExcel = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function () {
var s = gridGenerateExcel();
var blob = new Blob([s], { type: 'application/vnd.ms-excel' });
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = page.pagename+".xls";
a.click();
window.URL.revokeObjectURL(url);
};
}());
});
function gridGenerateExcel(title) {
if (_.isUndefined(title)) title = "Sheet1";
var s = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" \
xmlns="http://www.w3.org/TR/REC-html40"><head> \
<meta charset="utf-8" /> \
<!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets> \
<x:ExcelWorksheet><x:Name>' + title + '</x:Name><x:WorksheetOptions><x:DisplayGridlines/> </x:WorksheetOptions> \
</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>';
s += '<colgroups>';
grid.columns.forEach(function (col) {
s += '<col style="width: '+col.width+'px"></col>';
});
s += '<thead><tr>';
grid.columns.forEach(function (col) {
s += '<th style="background-color: #E5E5E5; border: 1px solid black;">' + col.name + '</th>';
});
s += '<tbody>';
_.forEach(grid.data,function(d){
s += '<tr>';
grid.columns.forEach(function (col) {
var value = d[col.id];
s += '<td ';
if (col.kindid == "money") {
s += "style = 'mso-number-format:\"\\#\\,\\#\\#0\\\\ _р_\\.\";white-space:normal;'";
} else if (col.type == "numeric") s += "";//" style = 'mso-number-format:\"\\@\";'";
else if (col.kindid == "date") s += " style='mso-number-format:\"Short Date\";'";
else s += " style='mso-number-format:\"\\@\";'";
s += '>';
if(_.isUndefined(value) || _.isNull(value)) {
s += '';
} else if (col.kindid == "date") {
s += moment(value).format('DD.MM.YY');
} else if (col.kindid == "money") {
s += formatMoney(value.toFixed(2));
} else if (col.type == "numeric") {
s += value.toString();
} else s += d[col.id];
});
});
s += '</table></body></html>';
return s;
}
答案 1 :(得分:0)
https://www.npmjs.com/package/xlsx
这里试试这个安静高效的
var workbook = XLSX.read(data, {
type: rABS ? 'binary' : 'array',
WTF: 1,
header: 1 });
console.log(workbook.Strings);
这是我用来获取对象数组的东西