导出为xls文件格式

时间:2016-08-19 08:40:45

标签: javascript jquery grid export xls

我需要一个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文件时出错。我想格式化中有一些东西。你能给我一些支持吗?

1 个答案:

答案 0 :(得分:0)

通过Shield UI查看此Grid example - 您可以使用它无缝地设置网格以导出为Excel 2003和2007(及更高版本)格式。

可以找到有关导出功能的完整文档here。它表示您也可以导出为PDF,无论数据来源和用于渲染它的控件如何。