【问题标题】:html table exported as xlsx but excel 2013 can't open ithtml 表导出为 xlsx 但 excel 2013 无法打开它
【发布时间】:2016-09-25 19:14:55
【问题描述】:

这是我的函数,可以将我的 html 表格转换为 excel 文件。问题是,我需要将该 excel 文件保存为 .xlsx 但我做不到。有人帮忙吗?

function exceller() {
  var uri = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;content-disposition:attachment;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"><head><!--[if gte mso 9]><?xml version="1.0" encoding="UTF-8" standalone="yes"?><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]; }) }

    $('#toExcel').html($('#pztable').html());
    var toExcel = $('#toExcel').html();
    var ctx = {
        worksheet: name || '',
        table: toExcel
    };
    var link = document.createElement("a");
    link.download = "export.xlsx";
    link.href = uri + base64(format(template, ctx))
    link.click();
    link.remove();
}

这里是 jsFiddle:https://jsfiddle.net/jxz60kqj/

【问题讨论】:

  • 我没有仔细阅读。你为什么要手动点击那个链接?
  • 你也可以提供一下你的作品吗?
  • 这是一个角度项目,我的表格数据非常复杂。但我会尝试将其导出到 jsfiddle。我也尝试了窗口定位功能。它也没有用.. @TMB
  • 我很担心最后两行,为什么它们是必要的?在我下面的回答中,用户必须单击链接才能下载。
  • 没关系。您可以删除最后 5 行并添加它,window.location.href = uri + base64(format(template, ctx)) + '.xlsx';这是同样的事情,但它只是不起作用......

标签: javascript html excel html-table xlsx


【解决方案1】:

您是否尝试过使用第三方 jQuery 插件?我一直在使用jquery.table2excel.js,效果很好。

您需要包含 JQuery 插件和 Table2Excel 插件,可以在 here 找到。

代码:

$("button").click(function(){ 
   $("#table2excel").table2excel({ 
      // exclude CSS class 
      exclude: ".noExl", 
      name: "Worksheet Name", 
      filename: "SomeFile" //do not include extension 
   }); 
 });

在这里演示:

http://www.jqueryscript.net/demo/Export-Html-Table-To-Excel-Spreadsheet-using-jQuery-table2excel/

【讨论】:

  • 感谢您的回答,但我不想为这种事情使用插件:)
【解决方案2】:

小提琴:https://jsfiddle.net/tbeckenhauer/mueqr96t/9/

如果你设置了 href 和下载属性就可以下载了

HTML

<a id="link" href="" download='blah.txt'>Download File!</a>

JavaScript

var excelData = 'data:text/plain;charset=utf-8,' + encodeURIComponent('your data goes here');

$('#link').click(function(event) {
    $(event.target).attr('href', excelData);
});

【讨论】:

  • 问题不在于下载文件。问题是当我下载文件时它无法使用 excel 2013 打开。我已经在做你说的事情了:) 但是谢谢你的回答
  • 我明白了,excel打不开文件。
  • 我将建议您将标题更改为一个问题,清楚地说明这一点。这将有助于吸引合适的人来回答这个问题。 “为什么excel打不开这个文件?”
  • 对不起我的错误:) 你是对的。我要改了
【解决方案3】:

我解决了。我只是用 'xls formatted head Element' 创建了一个 html 表格,以便 Excelxlsx 可以真正读取> 只是这种数据的一种不同类型的格式。它实际上是由许多 xml 打包而成的。因此,没有什么可以将 html 表格 导出为 xlsx。我使用 'ALASQL' 来做到这一点。效果很棒。我建议您使用 'ALASQL' 来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多