如何在导出前格式化文件excel?

时间:2016-11-03 03:07:09

标签: javascript angularjs export-to-excel

我想在导出之前控制布局这个文件。例如:我想在导出之前通过代码修复宽度列,标题颜色,边框表或高行一行或wordwrap。我使用 Angularjs 在我的项目中。可以给我一些建议库支持吗?像这样:  Picture file excel

当我尝试使用alasql库设置宽度列时,我收到了这个bug。 Picture Bugs

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

 app.factory('Excel', function ($window) {
var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<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><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
    base64 = function (s) { return $window.btoa(unescape(encodeURIComponent(s))); },
    format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) };
return {
    tableToExcel: function (tableId, worksheetName) {
        var table = $(tableId),
            ctx = { worksheet: worksheetName, table: table.html() },
            href = uri + base64(format(template, ctx));
        return href;
    }
};
})

调用函数

  $scope.exportToExcel = function (tableId) { // ex: '#my-table'          
    var exportHref = Excel.tableToExcel(tableId, 'sheetname');
    $timeout(function () { location.href = exportHref; }, 100); // trigger download
}