zoukankan      html  css  js  c++  java
  • js导出报表

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

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

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


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


    一:导入jquery

           

    [javascript] view plain copy
    1. <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>  


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

            

    [javascript] view plain copy
    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代码

    [javascript] view plain copy
    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.   
    40.   
    41. try {  
    42. var fname = oXL.Application.GetSaveAsFilename("Excel.xls",  
    43. "Excel Spreadsheets (*.xls), *.xls");  
    44. catch (e) {  
    45. print("Nested catch caught " + e);  
    46. finally {  
    47. oWB.SaveAs(fname);  
    48. oWB.Close(savechanges = false);  
    49. oXL.Quit();  
    50. oXL = null;  
    51. idTmr = window.setInterval("Cleanup();", 1);  
    52. }  
    53.   
    54.   
    55. else {  
    56. tableToExcel(tableid)  
    57. }  
    58. }  
    59. function Cleanup() {  
    60. window.clearInterval(idTmr);  
    61. CollectGarbage();  
    62. }  
    63. var tableToExcel = (function() {  
    64. 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(  
    65. s) {  
    66. return window.btoa(unescape(encodeURIComponent(s)))  
    67. }, format = function(s, c) {  
    68. return s.replace(/{(w+)}/g, function(m, p) {  
    69. return c[p];  
    70. })  
    71. }  
    72. return function(table, name) {  
    73. if (!table.nodeType)  
    74. table = document.getElementById(table)  
    75. var ctx = {  
    76. worksheet : name || 'Worksheet',  
    77. table : table.innerHTML  
    78. }  
    79. window.location.href = uri + base64(format(template, ctx))  
    80. }  
    81. })()  
    82. </script>  


    结束!!!!

    文末福利:

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

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


    【领取方法】

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

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

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


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

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


  • 相关阅读:
    国外可用的谷歌地图(可根据地址搜索经纬度)
    后台css框架(自用)
    DBHelp类sql分页(自用笔记)
    定制C++高效安全的运行时动态类型转换
    C++11右值引用和std::move语句实例解析
    浏览器内核-Webkit
    获取股票历史数据和当前数据的API
    从浏览器启动应用程序
    一个实时获取股票数据的安卓应用程序
    C++数据类型总结
  • 原文地址:https://www.cnblogs.com/ting6/p/9725600.html
Copyright © 2011-2022 走看看