原文链接: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. [NOI.AC#41]最短路 线性基

    链接 题解 如果不加边,两个点之间的长度是唯一的(只能走最短路径),因为如果重复走,就异或掉了. 因此,先DFS预处理一下每个点到根的距离 \(d[x]\) ,那么 \(x,y\) 之间的距离为 $d ...

  2. Ajax跨域:Jsonp实例--百度搜索框下拉提示

    Ajax跨域:Jsonp实例--百度搜索框下拉提示 一.总结 一句话总结:a.找好接口:b.用script标签的src引入文件(json数据):c.定义及实现上一步引入文件中的函数 1.如何找到一个网 ...

  3. tooltip两个特殊的属性

    <body style="margin: 50px;"> <!--两个特殊的属性--> <div id="selection"&g ...

  4. MySQL 5.7 多实例安装部署实例

    1. 背景  MySQL数据库的集中化运维,可以通过在一台服务器上,部署运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务.各个实例之间是相互独立的,每个实例的dat ...

  5. 洛谷 P1000 超级玛丽游戏

    P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级 ...

  6. java list 容器的ConcurrentModificationException

    java中的很多容器在遍历的同时进行修改里面的元素都会ConcurrentModificationException,包括多线程情况和单线程的情况.多线程的情况就用说了,单线程出现这个异常一般是遍历( ...

  7. java poi 向excel写入图片

    import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; impo ...

  8. 00087_File

    1.IO概述 (1)要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘.光盘.U盘等)上: (2)当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作 ...

  9. Codeforces Round #426 (Div. 1) A.The Meaningless Game (二分+数学)

    题目链接: http://codeforces.com/problemset/problem/833/A 题意: 给你 \(a\) 和 \(b\),两个人初始化为 \(1\).两个人其中一方乘以 \( ...

  10. 微信支付v2开发(8) 维权通知

    本文介绍微信支付中如何获得维权通知. 一.维权通知URL 在 微信支付开发(1) 微信支付URL配置 已提到,维权通知URL为 http://www.doucube.com/wxpay/rights. ...