【发布时间】:2014-11-24 06:50:58
【问题描述】:
我正在使用以下代码从 JSON 对象创建 excel 文件数据,然后单击按钮下载它。
getExcelFile: function() {
testJson = validation_data;
testTypes = {
"name": "String",
"city": "String",
"country": "String",
"birthdate": "String",
"amount": "Number"
};
emitXmlHeader = function() {
return '<?xml version="1.0"?>\n' +
'<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">\n' +
'<ss:Worksheet ss:Name="Sheet1">\n' +
'<ss:Table>\n\n';
};
emitXmlFooter = function() {
return '\n</ss:Table>\n' +
'</ss:Worksheet>\n' +
'</ss:Workbook>\n';
};
jsonToSsXml = function(jsonObject) {
var row;
var col;
var xml;
var data = typeof jsonObject != "object"
? JSON.parse(jsonObject)
: jsonObject;
xml = emitXmlHeader();
for (row = 0; row < data.length; row++) {
xml += '<ss:Row>\n';
for (col in data[row]) {
xml += ' <ss:Cell>\n';
xml += ' <ss:Data ss:Type="' + testTypes[col] + '">';
xml += data[row][col] + '</ss:Data>\n';
xml += ' </ss:Cell>\n';
}
xml += '</ss:Row>\n';
}
xml += emitXmlFooter();
return xml;
};
download = function(content, filename, contentType) {
if (!contentType)
contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
var a = document.getElementById('test');
var blob = new Blob([content], {
'type': contentType
});
a.href = window.URL.createObjectURL(blob);
a.download = filename;
};
download(jsonToSsXml(testJson), 'validation_data.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
}
但创建的文件无法在 Microsoft Office 2007 中打开并给出错误“文件可能已损坏”。请帮忙。
【问题讨论】:
-
请参考之前的堆栈溢出Question。这可能很有用。祝你好运。
-
感谢@Nayana_Das 的帮助。但是您提到的问题是将 JSON 转换为 CSV 格式的代码。我希望将我的 JSON 对象转换为 XLSX 格式。
-
希望这个模块对你有帮助,请查看icg-json-to-xlsx module,从这里,你将获得 git 存储库链接,你可以在其中下载该模块并进行锻炼。
-
@Nayana_Das:解析来自 ipaddress 的 json 数据是否有帮助,例如:127.0.0.1:8000/courses/?format=json 并生成 xlsx 表作为输出
标签: javascript