我遵循这示例将我的热下载到excel文件中。
问题是它做不到:
var exportPlugin = hot.getPlugin('exportFile');它返回未定义的。不用说,如果我console.log“热”,它就是我所期望的对象。
手柄桌的版本是最近的版本(1.7.3)。
在我的表中有任何选项可以阻止我加载插件吗?
我使用以下选项创建了hot:
data: sourceData,
colHeaders: colHeaders,
rowHeaders: false,
nestedRows: false,
contextMenu: false,
formulas: true,
comments: true,
columns: columnsProperties,
cell: cellsProperties,
fixedColumnsLeft: categoryColumn+1,
manualColumnFreeze: true,可以想象,sourceData、colHeaders、columnsProperties和cellsProperties都是在其他地方定义的。
我能很好地想象这张桌子。
谢谢
序列号
发布于 2016-10-19 08:07:16
我在自己的项目中有一个特性,可以将表下载为CSV文件,您可以直接使用excel读取该文件,当然还可以根据需要转换为XLSX格式。
参见本JSFiddle中的示例
以下是一个通用函数,用于将JSON对象转换为csv文件并下载它(用于IE & chrome/Firefox等):
function JSONToCSVConvertor(JSONData, colHeaders) {
var
arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData,
CSV = '',
row = "",
fileName = "handsontable.csv";
// Put the header (based on the colHeaders of my table in my example)
for (var index in colHeaders) {
row += colHeaders[index] + ';';
}
row = row.slice(0, -1);
CSV += row + '\r\n';
// Adding each rows of the table
for (var i = 0; i < arrData.length; i++) {
var row = "";
for (var index in arrData[i]) {
row += arrData[i][index] + ';';
}
row = row.slice(0, -1);
CSV += row + '\r\n';
}
if (CSV == '') {
alert("Invalid data");
return;
}
// Downloading the new generated csv.
// For IE >= 9
if(window.navigator.msSaveOrOpenBlob) {
var fileData = [CSV];
blobObject = new Blob(fileData);
window.navigator.msSaveOrOpenBlob(blobObject, fileName);
} else {
// For Chome/Firefox/Opera
var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);
var link = document.createElement("a");
link.href = uri;
link.style = "visibility:hidden";
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}例如,您可以将其与按钮一起使用:
Handsontable.Dom.addEvent(save, 'click', function() {
JSONToCSVConvertor(hot.getData(), hot.getSettings().colHeaders);
});请注意,我使用了一个具有~10k行的表,它的工作原理就像一种魅力。
https://stackoverflow.com/questions/40018249
复制相似问题