有没有办法将 html 表格导出到可在所有浏览器中运行的 Excel 中?

2023-12-12

我使用了下面的代码,但它仅适用于 Firefox。 它也不允许自定义导出的文件名。它需要一个随机文件名。

 var tableToExcel = (function () {
        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" ><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 function (table, name, filename) {
            var OriginalHTML = $('#' + table + '').html();
            if (!table.nodeType) {

                table = document.getElementById(table);
                $(table).find(".EditColumns").remove();
            }
            var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
            $(table).html(OriginalHTML);

            //window.location.href = uri + base64(format(template, ctx))
            document.getElementById("aExportTable").href = uri + base64(format(template, ctx));
            document.getElementById("aExportTable").download = filename;
            document.getElementById("aExportTable").click();
            HighlightSelectedRow();
        }
    })();

以下代码非常适合我使用 IE8+、Chrome 和 Firefox! 这是将 HTML 表导出到 Excel 的最简单方法,无需使用 blob、ActiveX-Elements 或 downloadify:

只需在 HTML 文档中插入一个空的 Iframe:

<iframe id="txtArea1" style="display:none"></iframe>

将以下函数添加到您的脚本部分并替换表 ID:

function fnExcelReport()
        {
              var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>";
              var textRange; var j=0;
              tab = document.getElementById('headerTable'); // id of table


              for(j = 0 ; j < tab.rows.length ; j++) 
              {     
                    tab_text=tab_text+tab.rows[j].innerHTML+"</tr>";
                    //tab_text=tab_text+"</tr>";
              }

              tab_text=tab_text+"</table>";
              tab_text= tab_text.replace(/<A[^>]*>|<\/A>/g, "");//remove if u want links in your table
              tab_text= tab_text.replace(/<img[^>]*>/gi,""); // remove if u want images in your table
                          tab_text= tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // reomves input params

                   var ua = window.navigator.userAgent;
                  var msie = ua.indexOf("MSIE "); 

                     if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer
                        {
                               txtArea1.document.open("txt/html","replace");
                               txtArea1.document.write(tab_text);
                               txtArea1.document.close();
                               txtArea1.focus(); 
                                sa=txtArea1.document.execCommand("SaveAs",true,"Say Thanks to Sumit.xls");
                              }  
                      else                 //other browser not tested on IE 11
                          sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));  


                          return (sa);
          }

最后调用该函数:

<button id="btnExport" onclick="fnExcelReport();"> EXPORT </button>

或使用 JQuery:

$("#btnExport").click(function () {

            fnExcelReport();
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法将 html 表格导出到可在所有浏览器中运行的 Excel 中? 的相关文章

  • HTML5 画布在缩放和旋转后平移

    我正在尝试用画布做一些事情 首先 我让用户上传图像 如果图像比我想要的大 我需要将其缩小 那部分工作得很好 最近我们遇到了 iPhone 用户上传图像的问题 这些都存在方向问题 我已经弄清楚如何提取方向 我的问题是当我操纵画布中的图像时会发
  • WordPress ~ 如何在一页上显示多个 Google Chart?

    下面是我插入到 WordPress Visual Composer 中的原始 HTML 块中的一个 Google 图表的代码 图表 ID 名称为 chart div1 这适用于我的 WP 网页
  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 由于运行 Javascript,Firefox 选择下拉列表不断刷新/恢复为默认选项 - AngularJS

    我正在 AngularJS 中构建一个应用程序 但在使用 Firefox 时无法选择下拉菜单 当我单击选择菜单并将鼠标悬停在选项上时 它会将所选选项从光标悬停的选项重置为默认 第一个选项 当选项数量很大时 选择正确的选项变得非常困难 该应用
  • 一旦元素存在就触发事件的脚本?

    我正在尝试编写一个小 Greasemonkey 脚本来实现 Facebook 中的一些任务 例如隐藏新闻等 问题是 我有一个 DOM 中尚不存在的元素的 ID 这是点击帖子的箭头图标时出现的小框 如何通过 jQuery 创建一个事件处理程序
  • 包含另一个单元格值的条件格式文本的公式

    我有一个 A 列 每个单元格中包含 1 4 个单词的短语 我还有 4 个包含 1 个单词值的单元格 B1 C1 D1 和 E1 我需要设置条件格式 这样 1 如果 A 列单元格中的文本包含与上述单元格之一的值匹配的单词 则以红色突出显示该单
  • CSS 列不会水平对齐

    我正在使用列计数来允许我的文本流入两个不同的列 但第一列的顶部 最左边 低于另一列 col moz column count 2 webkit column count 2 column count 2 div h3 Options h3
  • 使用 Microsoft Graph API 从 Sharepoint 站点提取 Excel.xlsx 工作簿

    正如标题中所述 我一直在尝试使用 Microsoft Graph API 从我们公司的 Sharepoint 站点提取 Excel 工作簿 我能够检索文件的元数据 但是当我添加 workbook 分段到 URL 我收到以下错误 error
  • 如何以编程方式确定 HTML 对象可以侦听哪些事件?

    我一直在查看developer mozilla org 和Apple 开发文档上的文档 但我找不到解释是否可以通过编程方式确定特定HTML 标记是否支持给定事件监听器的文档 就像我知道的那样
  • firebase 返回 onSnapshot 承诺

    我正在使用 firebase firestore 并且正在寻找一种返回快照承诺的方法 onlineUsers i want to return onSnapshot return this status database ref where
  • Phantomjs page.content 未检索页面内容

    我使用 Phantomjs 来抓取使用 JavaScript 和 Ajax 加载动态内容的网站 我有以下代码 var page require webpage create page onError function msg trace v
  • 在 GeoJson 数据接收到的 Google 地图多边形上放置标签

    我想将带有信息的标签 或带有标签的 div 放在由下面的代码片段绘制的多边形上 样式属性已成功应用于要素 多边形类型 有谁知道如何向该特征添加文本并将其显示在多边形的中心 function handleGeoJson data map da
  • 如何使用nodejs获取目录中第一个扩展名为.txt的文件?

    我所有文件所在的目录是 usr home jordan 该目录下有很多文件 在目录本身中 但有一个文件以 txt 扩展名命名 使用nodejs和fs 我想将带有txt扩展名的第一个文件 或任何文件 放入 mytxtfilepath 中 我在
  • Angular 中的动态子组件

    我正在构建一个具有一致的元素列表设计模式的应用程序 如果我有一个 A 类型的对象 我会创建AComponent它接受a作为输入 然后创建另一个组件来迭代 A 列表 AListComponent 那么如果我有一个对象 B 我需要做同样的事情
  • Img src 路径以及要传递的标头参数

    我在 jsp 页面中有一个 img 标记 其中 src 路径需要传递标头参数才能获取图像 我们怎样才能实现它呢 您现在可以使用fetch https developer mozilla org en US docs Web API Fetc
  • jquery load() 去除脚本标签 - 解决方法?

    有谁知道 jquery load 的解决方法 去掉从外部内容加载的脚本标签 有很多文档证明这种情况发生 但在网上搜索了大约 4 个小时后我找不到解决方法 我正在加载动态生成的 div 类似于搜索结果页面 并且需要将 click 绑定到每个动
  • 获取鼠标在滚动条上的位置

    当我向下滚动或向上滚动时如何获取鼠标位置 我试过这个 document mousemove function event captureMousePosition event scroll function event xMousePos
  • AES 在 cryptojs 中加密并在 python Crypto.Cipher 中解密

    使用 js CryptoJS 加密并使用 python crypto Cipher 解密时出现问题 这是我在js中的实现 附加 iv 与加密消息并使用 base64 进行编码
  • 如何在 Firefox 插件上使用 jQuery 1.5.2+?

    首先 我创建了一个接收参数并返回 jQuery 的函数 例如 function getjQuery window jquery code window return window jQuery 但后来我收到了一封评论电子邮件 他们告诉我必须
  • 如何使用javascript取消设置变量? [复制]

    这个问题在这里已经有答案了 这是我到目前为止所尝试的 var nxt I am next window onscroll function var scr this pageYOffset if scr gt 400 console log

随机推荐

  • Google App Script URLFetch 配额不清楚

    我有兴趣构建一个依赖外部服务的电子表格插件 并且 URLFetch 似乎是使用应用程序脚本执行远程 HTTP S 调用的唯一方法 我已经达到了应用脚本配额页面检查限制 我可以看到它们是 GSuite 计划每天 100 000 个呼叫 Gma
  • 使用正则表达式检测以带重音的大写字母开头的单词

    我想使用 Java 中的正则表达式提取以大写字母开头的单词 包括重音大写字母 这是我对以大写 A 到 Z 开头的单词的条件 if link text matches A Z true 但我也想要以 a 开头的单词accented也是大写字符
  • MASM32 中令人困惑的括号

    我正在尝试掌握 MASM32 但对以下内容感到困惑 我认为括号用于间接寻址 所以如果我有预定义的变量 data item dd 42 then mov ebx item 会将 item 的内容 即数字 42 放入 ebx 中并 mov eb
  • 如何在 MVC Razor 中显示 TimeSpan

    所以我有一个视频的持续时间 以秒为单位 我想在 Razor 中显示该持续时间 目前我正在使用 TimeSpan FromSeconds item Duration ToString 然而我正在使用的其余代码使用 Html DisplayFo
  • angularjs firebase onAuthStateChanged 注销数据库错误

    当我退出应用程序时 出现以下错误 Error permission denied at users KuehJHDJ15SfS1s6FIh1 Client doesn t have permission to access the desi
  • SSLPeerUnverifiedException 与 httpClient

    我正在尝试使用自签名证书测试安全的 http 连接 仅用于开发目的 但我无法解决对等未验证异常 当然我已经查看了有关此异常的类似帖子 以下是我正在使用的当前实现 public class SelfCertificatesSocketFact
  • 来自 pynput 的键盘监听器

    我正在尝试将键盘侦听器导入到我的班级中 但不断收到 NameError name on press is not defined 这是我的代码 from pynput import keyboard class game code with
  • 如何正确裁剪 iPhone 4G 拍摄的图像(带有 EXIF 旋转数据)?

    Folks 我一直在尝试让这段代码处理 iPhone 4G 上相机拍摄的图像 但没有成功 iPhone CGImageCreateWithImageInRect 旋转一些相机胶卷图片 此代码非常适合裁剪 正常 图像 我从互联网下载的图像或由
  • 未找到目标,请重新连接设备,Xcode:设备支持文件

    升级 Xcode 后 我无法在 Xcode 上运行我的 iPhone 我的 Xcode 等待啊等待终于给出了这样的错误并且卡住了 即使我拔掉了 USB 电缆并删除了派生数据 也没有任何变化 我在将 Xcode 升级到 12 0 12 1 和
  • Python:使用 vars() 将字符串分配给变量

    我发现能够在运行时创建新变量并创建结果字典以供稍后处理 即写入文件 非常有用 myDict for i in range 1 10 temp variable str i vars temp myFunctionThatReturnsDat
  • Slf4j LoggerFactory.getLogger 和 sonarqube

    初始化 Slf4j LoggerFactory getLogger 的正确方法是什么 我的代码中有 static final Logger logger LoggerFactory getLogger MyClass class 但 son
  • 创建 JavaScript 小部件时如何管理浏览器“后退”和“前进”按钮

    我创建了一个 Javascript 小部件 允许用户在外部网站上嵌入日历 现在我没有以任何方式处理浏览器后退 前进按钮 这意味着如果他们点击一个事件 它会通过ajax加载 但是如果他们点击 后退 他们就会被带到以前的网站 我看到两个解决方案
  • 使用vbscript读取/保存网页

    目标 登录网页 并将 html 保存到文件中以供稍后解析 页面上的 html 只是用户列表以及他们登录和注销的时间 当您加载网页时 会弹出一个 JavaScript 框并要求输入登录信息 我可以用 SendKeys 填充它 但我真的想在不弹
  • C# 字符串字符替换

    我有一个字符串 其中倒数第三个字符有时是 如果是这种情况 我想将其替换为 该字符串还可以有其他 贯穿始终 有一个优雅的解决方案吗 编辑 感谢大家的回答 只是为了澄清一下 是的 倒数第三个我的意思是以下形式的字符串xxxxxx xx 这是欧洲
  • 尝试在闪亮的 R 应用程序顶部添加一个框来容纳简短的描述和徽标

    我正在尝试在顶部闪亮的 R 应用程序中添加一个框 以容纳简短的描述和徽标 我一直找不到任何有效的代码 我的想法是包含一个水平框并将徽标的一些文本 图像传递到其中 但尚未找到任何解决方案 任何帮助表示赞赏 下面是一些结构代码 header l
  • Android SD 卡创建的文件不可见

    我使用以下代码在 SD 卡中创建了一个文件 File outputFile new File Environment getExternalStorageDirectory getAbsolutePath File separator te
  • 类型“xxx”在未引用的程序集中定义

    我一直在互联网上寻找有关此问题的答案 并且确实可以使用帮助 我已经看过有关此错误的其他帖子 但这些答案都没有帮助我 完整的错误是 类型 xxx 是在未引用的程序集中定义的 您必须添加对程序集 xxx Version 0 0 0 0 Cult
  • 具有原始值的枚举

    为什么我不能用这样的原始值定义枚举 enum Edges Double Double case TopLeft 0 0 0 0 case TopRight 1 0 0 0 case BottomLeft 0 0 1 0 case Botto
  • Firebase 实时数据库的这些默认安全规则意味着什么?

    I ve created a new project on Firebase and created a Realtime Database in there When asked about the security rules for
  • 有没有办法将 html 表格导出到可在所有浏览器中运行的 Excel 中?

    我使用了下面的代码 但它仅适用于 Firefox 它也不允许自定义导出的文件名 它需要一个随机文件名 var tableToExcel function var uri data application vnd ms excel base6