当前位置:  开发笔记 > 编程语言 > 正文

使用Javascript将表导出到MS Excel,在MS Edge上无效

如何解决《使用Javascript将表导出到MSExcel,在MSEdge上无效》经验,为你挑选了1个好方法。

我一直在使用此链接中显示的相同代码将表格从HTML导出到Excel,并且它在许多浏览器中都运行良好.

当我在全新的MS Edge网络浏览器上测试它时会出现问题,它会打开一个新的空白选项卡.没有控制台错误,没有警告弹出,没有.正如我所说,在该链接中有一种方法可以处理IE中的Excel导出.

所以我想知道是否有人知道类似的技巧来支持新的Microsoft Edge浏览器.

谢谢.



1> Sampson..:

出于安全目的,您目前无法导航到Internet Explorer或Microsoft Edge中的数据URL .但是,可以使用msSaveBlobmsSaveOrOpenBlob下载或保存blob .

我在下面为你准备了一个基本的例子:

(function () {

  // Generate our CSV string from out HTML Table
  var csv = tableToCSV( document.querySelector( "#sites" ) );
  // Create a CSV Blob
  var blob = new Blob( [ csv ], { type: "text/csv"} );

  // Determine which approach to take for the download
  if ( navigator.msSaveOrOpenBlob ) {
    // Works for Internet Explorer and Microsoft Edge
    navigator.msSaveOrOpenBlob( blob, "output.csv" );

  } else {

    // Attempt to use an alternative method
    var anchor = document.body.appendChild(
      document.createElement( "a" )
    );
    // If the [download] attribute is supported, try to use it
    if ( "download" in anchor ) {
      anchor.download = "output.csv";
      anchor.href = URL.createObjectURL( blob );
      anchor.click();
    }

  }

  function tableToCSV( table ) {
    // We'll be co-opting `slice` to create arrays
    var slice = Array.prototype.slice;

    return slice.call( table.rows ).map(function ( row ) {
      return slice.call( row.cells ).map(function ( cell ) {
        return '"t"'.replace( "t", cell.textContent );
      }).join( "," );
    }).join( "\r\n" );

  }

}());

在线测试:http://jsfiddle.net/jonathansampson/nc4k4hz8/

您将要执行位特征检测,看看是否msSaveBlobmsSaveOrOpenBlob可用.如果是,请使用它们,如果不是,则可以沿着另一条路线前进.

我希望这有帮助.


谢谢!它就像一个魅力.
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有