您的位置:首页 > Web前端 > JQuery

前端导出 table 成 excel(jquery 方向)

2021-03-29 16:46 2391 查看

前端导出 table 成 excel(jquery 方向)

老项目是 jsp 架构的,外加这个是 arcgis 查询结果导出成 excel 不是后端返回的,之前 vue 的那个框架用不了,只能另寻他法了...

  • 感谢开源项目:tableExport.jquery.plugin jQuery plugin to export a html table to JSON, XML, CSV, TSV, TXT, SQL, Word, Excel, PNG and PDF

1.在项目中加入

tableExport.jquery.plugin-1.10.22
相关的文件

由于我的项目只需要导出 excel,故 pdf 无关文件没有导入

cd tableExport
tree /f

│  tableExport.min.js
│
└─libs
├─FileSaver
│      FileSaver.min.js
│
└─js-xlsx
xlsx.core.min.js

2.jsp 页面引入文件

<!-- table 导出  excel 插件 -->
<script type="text/javascript" src="<%=ctx %>/tableExport/libs/FileSaver/FileSaver.min.js"></script>
<script type="text/javascript" src="<%=ctx %>/tableExport/libs/js-xlsx/xlsx.core.min.js"></script>
<!-- 这个不要忘了导入,很关键 -->
<script type="text/javascript" src="<%=ctx %>/tableExport/tableExport.min.js"></script>

3.事件触发导出方法

// 导出表格内容
function exportData()
{
/* 导出表格内容 */
$('#exportTableId').tableExport({
type:'excel',
fileName: '条件查询结果-' + new Date().format("yyyyMMdd-hhmmss")
});
}

4.补充

由于页面上的 table 表格做了分页处理,然后这个导出方式又依赖于 table 的 dom 元素,故我采用的是导出隐藏 table 的方式(老项目太磨人了,优先实现功能暂且不管性能吧... 毕竟数据也不会很多)

  • 即页面上其实是有两个 table,一个用于分页展示,另一个用于导出 excel 方法取到全部数据(当然用户是看不到这个 table 的)
  • 所以要导出分页的数据,只需要把
    $('#exportTableId').tableExport
    56c
    ({
    换成
    $('#showTableId').tableExport({
    即可

关于隐藏 table,还有点小坑

  • display: none;
    取不到数据
  • width: 0; height: 0;
    也取不到数据
  • 最后有数据的方式是:
    <table style="height: 0; display: inline-block; overflow: hidden; position: fixed; top: 0;">....</table>

第二天补充:又看了下文档(github Readme.md),发现这样写就可以导出隐藏表格了 =>

<table id="conditionQueryWholeTable" style="display:none;" data-tableexport-display="always">...</table>
,所以还是多看看看文档,自己摸索出来了还好,没摸索出来...

经测试,导出1000条数据就很卡了...浏览器直接卡到无响应

5.更多操作自己探索,我的需求到这里已经结束了...

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: