原文链接: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. php全局变量的使用

    php全局变量的使用 一.总结 1.php的全局变量:php的全局变量和C++,Java的全局变量不一样 2.页面嵌套php:我在html页面中嵌套php代码的时候,php的全局变量好像和C++,Ja ...

  2. 9.使用 npm 命令安装模块

    转自:http://www.runoob.com/nodejs/nodejs-tutorial.html npm 安装 Node.js 模块语法格式如下: $ npm install <Modu ...

  3. CList 点击表头排序 (3)两种排序的第二种

    在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法 CList 点击表头排序 (1)SortItems函数 CList 点击表头排序 (2 ...

  4. WPF 入门《布局面板》

    常见的几个布局面板 1.StackPanel面板 StackPanel面板能够简单根据单行或者单列进行元素排列, StackPanel 默认的布局方向为垂直方向(Vertical), 由Orienta ...

  5. 洛谷 P1109 学生分组

    P1109 学生分组 题目描述 有N组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界R和下界L(L<=R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 ...

  6. android屏幕适配方案

    曾经看了android的屏幕适配方案,有非常多种.当中自己用到的一种是:先找一款主流的分辨率的android机,如:1080*1920的分辨率做基准,然后在这个基准上.调整好一切布局.图片.适配其它手 ...

  7. Android实现微信分享及注意事项

    一.获取帮助文档并下载相关资料 首先打开微信开放平台:https://open.weixin.qq.com/ 如果没有注册,请先注册并上传开发者资料等待审核. 资源中心----移动应用开发----分享 ...

  8. Python 极简教程(十)集合 set

    什么是集合? 集合(set)是一种可变,无序和不重复的序列. 集合是python的序列之一,集合没有列表(list).元组(tuple)和字典(ditc)常见.但是有时候也有奇效. 我们先来看个集合的 ...

  9. mysql 语句优化心得

    排序导致性能较慢 优化策略:1.尽量不使用排序 2.只查有索引的结果然后 内连接查询 select  bizchance0_.*  from biz_chance bizchance0_, biz_b ...

  10. amazeui学习笔记--css(基本样式2)--基础设置Base

    amazeui学习笔记--css(基本样式2)--基础设置Base 一.总结 1.盒子模型:外margin,内padding,这里的内外指的边框 2.border-box:Amaze UI 将所有元素 ...