我需要一个JQuery网格,导出到xls或javascript代码,导出为xlsx文件格式。我正在尝试这样的事情:
function emitXmlHeader(testTypes) {
var headerRow = '<ss:Row>\n';
for (var colName in testTypes) {
headerRow += ' <ss:Cell>\n';
headerRow += ' <ss:Data ss:Type="String">';
headerRow += colName + '</ss:Data>\n';
headerRow += ' </ss:Cell>\n';
}
headerRow += '</ss:Row>\n';
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' + headerRow;
};
function emitXmlFooter() {
return '\n</ss:Table>\n' +
'</ss:Worksheet>\n' +
'</ss:Workbook>\n';
};
function jsonToSsXml(data, testTypes) {
var row;
var col;
var xml;
xml = emitXmlHeader(testTypes);
for (row = 0; row < data.length; row++) {
xml += '<ss:Row>\n';
for (col in testTypes) {
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;
};
function download(content, filename, contentType) {
if (!contentType) contentType = 'application/octet-stream';
var a = document.getElementById('exportExcel');
var blob = new Blob(["\ufeff", content], {
'type': contentType
});
a.href = window.URL.createObjectURL(blob);
a.download = filename;
a.click();
};
function excelExport() {
var data = [
{
"firstname": "John",
"lastname": "Smith",
"date": "2015-11-11"
},
{
"firstname": "Jim",
"lastname": "Bains",
"date": "2015-11-11",
}
];
var testTypes = {
"firstname": "String",
"lastname": "String",
"date": "Date"
};
var excel = jsonToSsXml(data, testTypes);
download(excel, 'test.xls', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
}
打开xls文件时出错。我想格式化中有一些东西。你能给我一些支持吗?
答案 0 :(得分:0)
通过Shield UI查看此Grid example - 您可以使用它无缝地设置网格以导出为Excel 2003和2007(及更高版本)格式。
可以找到有关导出功能的完整文档here。它表示您也可以导出为PDF,无论数据来源和用于渲染它的控件如何。