原文链接:https://blog.csdn.net/qq_37936542/article/details/78376156

需求:项目中有一个学生签到模块需要导出每天的签到数据,一开始用poi在后台导出,window下运行没什么问题,但是把项目部署到linux环境上,提示导出路径不存在,思索良久也没有找到解决的办法,最后只能在前端使用js导出表格。

如果有童鞋实现了在linux下使用poi,还请高抬贵手将poi设置路径那一段代码打赏给我看一看,不胜感激,么么哒。

注意:js导出表格是利用浏览器自带的下载功能去实现的,所以不需要定义下载路径,很好用,唯一的缺点就是,表格样式不知道怎么去定义。

一:导入jquery

  1. <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>

二:页面准备一个table和一个导出的按钮

  1. <table id="mytab" border="1">
  2. <tr>
  3. <th>Month</th>
  4. <th>Savings</th>
  5. </tr>
  6. <tr>
  7. <td>January</td>
  8. <td>$100</td>
  9. </tr>
  10. </table>
  11. <input value="开始导出" type="button" id="export" onclick="method5('mytab')">   //参数为table的id

三:js代码

  1. <script type="text/javascript">
  2. //打印表格
  3. var idTmr;
  4. function getExplorer() {
  5. var explorer = window.navigator.userAgent;
  6. //ie
  7. if (explorer.indexOf("MSIE") >= 0) {
  8. return 'ie';
  9. }
  10. //firefox
  11. else if (explorer.indexOf("Firefox") >= 0) {
  12. return 'Firefox';
  13. }
  14. //Chrome
  15. else if (explorer.indexOf("Chrome") >= 0) {
  16. return 'Chrome';
  17. }
  18. //Opera
  19. else if (explorer.indexOf("Opera") >= 0) {
  20. return 'Opera';
  21. }
  22. //Safari
  23. else if (explorer.indexOf("Safari") >= 0) {
  24. return 'Safari';
  25. }
  26. }
  27. function method5(tableid) {
  28. if (getExplorer() == 'ie') {
  29. var curTbl = document.getElementById(tableid);
  30. var oXL = new ActiveXObject("Excel.Application");
  31. var oWB = oXL.Workbooks.Add();
  32. var xlsheet = oWB.Worksheets(1);
  33. var sel = document.body.createTextRange();
  34. sel.moveToElementText(curTbl);
  35. sel.select();
  36. sel.execCommand("Copy");
  37. xlsheet.Paste();
  38. oXL.Visible = true;
  39. try {
  40. var fname = oXL.Application.GetSaveAsFilename("Excel.xls",
  41. "Excel Spreadsheets (*.xls), *.xls");
  42. } catch (e) {
  43. print("Nested catch caught " + e);
  44. } finally {
  45. oWB.SaveAs(fname);
  46. oWB.Close(savechanges = false);
  47. oXL.Quit();
  48. oXL = null;
  49. idTmr = window.setInterval("Cleanup();", 1);
  50. }
  51. } else {
  52. tableToExcel(tableid)
  53. }
  54. }
  55. function Cleanup() {
  56. window.clearInterval(idTmr);
  57. CollectGarbage();
  58. }
  59. var tableToExcel = (function() {
  60. var uri = 'data:application/vnd.ms-excel;base64,', template = '<html><head><meta charset="UTF-8"></head><body><table  border="1">{table}</table></body></html>', base64 = function(
  61. s) {
  62. return window.btoa(unescape(encodeURIComponent(s)))
  63. }, format = function(s, c) {
  64. return s.replace(/{(\w+)}/g, function(m, p) {
  65. return c[p];
  66. })
  67. }
  68. return function(table, name) {
  69. if (!table.nodeType)
  70. table = document.getElementById(table)
  71. var ctx = {
  72. worksheet : name || 'Worksheet',
  73. table : table.innerHTML
  74. }
  75. window.location.href = uri + base64(format(template, ctx))
  76. }
  77. })()
  78. </script>

结束!!!!

文末福利:

福利一:前端,Java,产品经理,微信小程序,Python等10G资源合集大放送:https://www.jianshu.com/p/e8197d4d9880

福利二:微信小程序入门与实战全套详细视频教程。

【领取方法】

关注 【编程微刊】微信公众号:

回复【小程序demo】一键领取130个微信小程序源码demo资源。

回复【领取资源】一键领取前端,Java,产品经理,微信小程序,Python等资源合集10G资源大放送。

原文作者:祈澈姑娘
原文链接:https://www.jianshu.com/u/05f416aefbe1
创作不易,转载请告知

90后前端妹子,爱编程,爱运营,爱折腾。
坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,欢迎大家一起探讨交流。

js导出报表的更多相关文章

  1. js导出Excel表格

    js导出Excel表格 直接上代码: 红色部分:如果表格数据中有“1/1”这样的值,会在导出的Excel中转化为日期“1月1日”,所以才加上了红色那两句.如果返回值中没有这样的格式,红色部分可以不写. ...

  2. EasyUI 如何结合JS导出Excel文件

    出处:http://blog.csdn.net/jumtre/article/details/41119991 EasyUI 如何结合JS导出Excel文件 分类: 技术 Javascript jQu ...

  3. Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"

    Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...

  4. js导出excel

    function inportEx() { $("#btnEx").text("导出中..."); var fugNumber = "";/ ...

  5. 使用 jquery.wordexport.js导出的Word排版

    js导出word文档所需要的两个插件: FileSaver.js jquery.wordexport.js 使用jquery.wordexport.js这个插件导出的word文档的排版方式: 编辑器打 ...

  6. js导出excel增加表头、mso-number-format定义数据格式

    问题1:增加表头 js导出表格时,只会导出table里的展现出的内容,如需增加表头等内容需要在页面获取的字符串中拼接表头的相关字符串,详细介绍如下: tableString:新增的表头内容字符串: c ...

  7. JS导出excel设置下载的标题/与angular结合冲突

    2017.8更新 此功能与angular结合使用时,最后一行 document.getElementById("dlink").click(); 与angular的ng-click ...

  8. [转]tableExport.js 导出excel 如果有负数或是空值 导出前面会自动加上单引号

    原文地址:https://blog.csdn.net/private66/article/details/88718285 tableExport.js  导出excel  如果有负数或是空值 导出前 ...

  9. 利用PHPExcel导出excel 以及利用js导出excel

    导出excel的方法output_excel需要依赖PHPExcel 导出csv的方法csv_export不需要 <?php /** * @author ttt */ class ExcelCo ...

随机推荐

  1. Windows Server 2016 关闭Internet Explorer增强的安全配置

    Windows Server 2016 关闭Internet Explorer增强的安全配置 IE11 默认启用 Internet Explorer 增强的安全配置,浏览网页时这个提示十分频繁,是不是 ...

  2. $routeParams 实现路由指定参数

    [摘要]后台管理系统权限控制到按钮级别,将每一个资源的key绑定在url中,渲染页面的时候去根据key来获取当前页面的按钮列表. router.js angular.module("app. ...

  3. 【Codeforces Round #451 (Div. 2) D】Alarm Clock

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 尺取法+二分. 类似滑动窗口. 即左端点为l,右端点为r. 维护a[r]-a[l]+1总是小于等于m的就好. (大于m就右移左端点) ...

  4. DataTable +chart控件

    //这是仿你的DataTable //-----开始--------- DataTable dataTable1 = new System.Data.DataTable(); dataTable1.C ...

  5. C# C++ 字符串传递

    C# C++ 字符串传递 标签: c#c++bytestring测试c 2012-06-14 17:425707人阅读评论(3)收藏举报 分类: C#(11)  作者同类文章X C++(112)  作 ...

  6. POJ 3723 Conscription MST

    http://poj.org/problem?id=3723 题目大意: 需要征募女兵N人,男兵M人,没征募一个人需要花费10000美元,但是如果已经征募的人中有一些关系亲密的人,那么可以少花一些钱, ...

  7. 双向链表(自己写的c++类)

    UVA还是上不去T T哭瞎了. 只好老老实实的研究上回买的书了. 写得有点长.好吧,我只是来复习C++类的. 特意用class 而不用struct写链表. 数据结构还没学...双向链表就当先预习了. ...

  8. Nginx TCP代理

    nginx 在1.9.0 版本发布以前如果要想做到基于TCP的代理及负载均衡需要通过打名为nginx_tcp_proxy_module的第三方patch来实现,该模块的代码托管在github上 网址: ...

  9. Java Scheduler ScheduledExecutorService ScheduledThreadPoolExecutor Example(ScheduledThreadPoolExecutor例子——了解如何创建一个周期任务)

    Welcome to the Java Scheduler Example. Today we will look into ScheduledExecutorService and it's imp ...

  10. 利用动态图层实现数据的实时显示(arcEngine IDynamiclayer)

    marine 原文利用动态图层实现数据的实时显示(arcEngine IDynamiclayer) 说明:最近一个项目用到这方面知识,文章主要来至网络,后期会加入自己的开发心得.(以下的代码实例中,地 ...