原文链接: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. 2.1 Producer API官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 2.1 Producer API 2.1.生产者API 我们鼓励所有新开发的程序使用 ...

  2. 一个统一将数据转换为JSON的方法

    这是我得方法: 导包: import net.sf.json.JSONArray; import net.sf.json.JSONObject; public void writeJson(Objec ...

  3. 微信小程序简单常见首页demo

    wxml <view class='index-contier'> <view class="index-left"> <view>电池剩余&l ...

  4. Java调用jama实现矩阵运算

    Java调用jama实现矩阵运算 一.jama简介 Jama是一个基本的线性代数java包.包括一个基本的Matrix类和5个矩阵分解类. Matrix类提供了基本的线性代数数值运算的功能,不同的构造 ...

  5. tcl -mode

    -exact     严格匹配(如string equal) -glob 通配符式匹配(string match) -regexp   正则表达式匹配(regexp) array get和array ...

  6. 【Educational Codeforces Round 33 B】Beautiful Divisors

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的那些数字打表出来. 逆序枚举就好 [代码] /* 1.Shoud it use long long ? 2.Have you ...

  7. Android中的Parcelable接口和Serializable使用方法和差别

    Parcelable接口: Interface for classes whose instances can be written to and restored from a Parcel. Cl ...

  8. WIN7/8/10下批处理提权工具

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 自动添加批处 ...

  9. 每天自动备份MySQL数据库的shell脚本

    经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的.一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行.我们需要一种安全的,每天自动备份的方法 ...

  10. 【hdu 3518】Boring counting

    [链接]h在这里写链接 [题意] 给出一个字符串,求出至少不重叠出现2次以上的子串有多少个. [题解] 枚举要找的子串的长度i; 根据height数组,找出连续>=i的height; 这几个起始 ...