原文地址:https://blog.csdn.net/javayoucome/article/details/80081771

1.介绍

Bootstrap Table介绍见官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/

Bootstrap 中文网:http://www.bootcss.com/

Bootstrap Table Demo:http://issues.wenzhixin.net.cn/bootstrap-table/index.html

Bootstrap Table API:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/

Bootstrap Table源码:https://github.com/wenzhixin/bootstrap-table

Boostrap Table 扩展API:http://bootstrap-table.wenzhixin.net.cn/extensions/

2.页面引用

为了方便bootstrap及bootstrap-table用官方推荐引用方式,想自己下载源码可以自行下载.

导出Excel所需额外的4个js可从以下2个地址找到那4个文件,不需要导出的可以无视.

下载地址   https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/export

https://github.com/hhurz/tableExport.jquery.plugin

  1. <!-- 引入bootstrap样式 -->
  2.  
  3. <link href="https://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
  4. <!-- 引入bootstrap-table样式 -->
  5. <link href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet">
  6.  
  7. <!-- jquery及bootstrapjs -->
  8. <script src="https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js"></script>
  9. <script src="https://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  10.  
  11. <!-- bootstrap-table.min.js -->
  12. <script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>
  13. <!-- 引入中文语言包 -->
  14. <script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/locale/bootstrap-table-zh-CN.min.js"></script>
  15. <!-- bootstrap-table-export数据导出---后面两个是Excel2007所需要的js -->
  16. <script src="${basePath }/js/bootstrap-table-export.js"></script>
  17. <script src="${basePath }/js/tableExport.min.js"></script>
  18. <script src="${basePath }/js/xlsx.core.min.js"></script>
  19. <script src="${basePath }/js/FileSaver.min.js"></script>

3.简单示例

3.1在html中定义一个table标签
<table id="table"></table>
3.2使用bootstrap-table有两种方式,第一种是:通过data属性的方法--因为不灵活不做过多演示.类似
  1. <table data-toggle="table" data-url="data1.json">
  2. <thead>
  3. <tr>
  4. <th data-field="id">Item ID</th>
  5. <th data-field="name">Item Name</th>
  6. <th data-field="price">Item Price</th>
  7. </tr>
  8. </thead>
  9. </table>
3.3使用JavaScript方式,几乎所有使用bootstrap-table的全是以这种方式,学习bootstrap-table,就是学习它的API,介绍基本常用的API,详情请查看官方文档或看这个博主翻译的
https://blog.csdn.net/rickiyeat/article/details/56483577
页面引入以下js
  1. $("#table").bootstrapTable({ // 对应table标签的id
  2. url: base_path + "/product/list", //AJAX获取表格数据的url
  3. striped: true, //是否显示行间隔色(斑马线)
  4. pagination: true, //是否显示分页(*)
  5. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  6. paginationLoop: false, //当前页是边界时是否可以继续按
  7. queryParams: function (params) { // 请求服务器数据时发送的参数,可以在这里添加额外的查询参数,返回false则终止请求
  8. return {
  9. limit: params.limit, // 每页要显示的数据条数
  10. offset: params.offset, // 每页显示数据的开始行号
  11. //sort: params.sort, // 要排序的字段
  12. //sortOrder: params.order, // 排序规则
  13. //dataId: $("#dataId").val() // 额外添加的参数
  14. }
  15. },//传递参数(*)
  16. pageNumber:1, //初始化加载第一页,默认第一页
  17. pageSize: 10, //每页的记录行数(*)
  18. pageList: [10, 25, 50, 100,'all'], //可供选择的每页的行数(*)
  19. contentType: "application/x-www-form-urlencoded",//一种编码。在post请求的时候需要用到。这里用的get请求,注释掉这句话也能拿到数据
  20. //search: true, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  21. strictSearch: false, //是否全局匹配,false模糊匹配
  22. showColumns: true, //是否显示所有的列
  23. showRefresh: true, //是否显示刷新按钮
  24. minimumCountColumns: 2, //最少允许的列数
  25. clickToSelect: false, //是否启用点击选中行
  26. //height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
  27. //uniqueId: "id", //每一行的唯一标识,一般为主键列
  28. showToggle:true, //是否显示详细视图和列表视图的切换按钮
  29. cardView: false, //是否显示详细视图
  30. detailView: false, //是否显示父子表
  31. cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
  32. sortable: true, //是否启用排序
  33. sortOrder: "asc", //排序方式
  34. sortName: 'sn', // 要排序的字段
  35. columns: [
  36. {
  37. field: 'sn', // 返回json数据中的name
  38. title: '订货号', // 表格表头显示文字
  39. align: 'center', // 左右居中
  40. valign: 'middle' // 上下居中
  41. }, {
  42. field: 'productname',
  43. title: '商品名称',
  44. align: 'center',
  45. valign: 'middle'
  46. }, {
  47. field: 'cost',
  48. title: '价格(¥)',
  49. align: 'center',
  50. valign: 'middle',
  51. sortable:true
  52. }, {
  53. field: 'brankname',
  54. title: '品牌',
  55. align: 'center',
  56. valign: 'middle',
  57. }, {
  58. field: 'specificationvalues',
  59. title: '规格',
  60. align: 'center',
  61. valign: 'middle',
  62. }, {
  63. field: 'areaname',
  64. title: '产地',
  65. align: 'center',
  66. valign: 'middle',
  67. }
  68. ],
  69. onLoadSuccess: function(){ //加载成功时执行
  70. console.info("加载成功");
  71. },
  72. onLoadError: function(){ //加载失败时执行
  73. console.info("加载数据失败");
  74. },
  75.  
  76. //>>>>>>>>>>>>>>导出excel表格设置
  77. showExport: phoneOrPc(), //是否显示导出按钮(此方法是自己写的目的是判断终端是电脑还是手机,电脑则返回true,手机返回falsee,手机不显示按钮)
  78. exportDataType: "basic", //basic', 'all', 'selected'.
  79. exportTypes:['excel','xlsx'], //导出类型
  80. //exportButton: $('#btn_export'), //为按钮btn_export 绑定导出事件 自定义导出按钮(可以不用)
  81. exportOptions:{
  82. //ignoreColumn: [0,0], //忽略某一列的索引
  83. fileName: '数据导出', //文件名称设置
  84. worksheetName: 'Sheet1', //表格工作区名称
  85. tableName: '商品数据表',
  86. excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],
  87. //onMsoNumberFormat: DoOnMsoNumberFormat
  88. }
  89. //导出excel表格设置<<<<<<<<<<<<<<<<
  90.  
  91. });
  1. /*判断终端是手机还是电脑--用于判断文件是否导出(电脑需要导出)*/
  2. function phoneOrPc(){
  3. var sUserAgent = navigator.userAgent.toLowerCase();
  4. var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
  5. var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
  6. var bIsMidp = sUserAgent.match(/midp/i) == "midp";
  7. var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
  8. var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
  9. var bIsAndroid = sUserAgent.match(/android/i) == "android";
  10. var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
  11. var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
  12. if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
  13. return false;
  14. } else {
  15. return true;
  16. }
  17. }
需要注意的项

1.交易测试时分页先选择'client',因为分页是客户端的话,导出数据会方便可以随意定义'basic', 'all', 'selected'.如果分页是服务端的话即使选择'all导出的也是当前页('basic'),如果想导出全部话,可以先将页面显示条目数为全部,再导出当前页即就是全部数据了.

2.分页如果是服务端的话返回的json串必须包含2个数据,一个是"total"即所有数据条数.另一个"rows"即"当前页"显示的内容.(见下图json串格式)

后台参考代码(以服务端分页为例,如果客户端分页先把方法参数去掉,再把for循环改成循环100次,后直接返回list即可)

  1. @Controller
  2. @RequestMapping("/product")
  3. public class TestController {
  4.  
  5. @RequestMapping("/list")
  6. @ResponseBody
  7. public Map<String,Object> listProduct(@RequestParam(value = "limit", required = false)Integer limit, @RequestParam(value = "offset", required = false)Integer offset) {
  8. Map<String,Object> map = new HashMap<>();
  9.  
  10. List<SkuExt> list = new ArrayList<SkuExt>();//此处应该是从数据库查出来的数据,为了测试方便写个循环
  11. for (int i = offset; i < limit+offset; i++) {
  12. SkuExt skuExt = new SkuExt();
  13. skuExt.setSn(i+"");
  14. skuExt.setProductname("商品名称"+i);
  15. skuExt.setCost(new BigDecimal(i*100));
  16. skuExt.setBrankname("品牌名称"+i);
  17. skuExt.setSpecificationvalues("规格值是"+i);
  18. skuExt.setAreaname("产地"+i);
  19. list.add(skuExt);
  20. }
  21. map.put("total", 100);//假设共有100条数据
  22. map.put("rows", list);
  23. return map;
  24. }

--------------------------------------以上就是代码,效果如下------------------------------------------

showToggle:true这个属性的效果如下:

导出按钮效果如下:导出的按钮和下拉提示应该不是这样,是我自己改了里面内容文字,很好实现.

以上,纯手写,大神勿喷.

[转]手把手教你--Bootstrap Table表格插件及数据导出(可导出Excel2003及Exce2007)的更多相关文章

  1. Bootstrap Table表格一直加载(load)不了数据-解决办法

    bootstrap-table是一个基于Bootstrap风格的强大的表格插件神器,官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ 这里列出遇到的一 ...

  2. JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)

    前言:前天刚写了篇JS组件系列——Bootstrap Table 表格行拖拽,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行.博主用了半天时间研究了下,效果是出来了,但是感觉不尽 ...

  3. MySQL+Service+Servlet+Jsp实现Table表格分页展示数据

    下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...

  4. bootstrap 分页表格插件

    找了两个table的插件,一个是bootstrap table ,另一个是bootstrap-paginator 这里只介绍 bootstrap table 插件 使用及简单案例 文档介绍:http: ...

  5. JS组件系列——Bootstrap Table 表格行拖拽

    前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到 ...

  6. bootstrap table表格属性、列属性、事件、方法

    留存一份,原文地址http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/ 表格参数 表格的参数定义在 jQuery.fn.bootst ...

  7. bootstrap table分页,重新数据查询时页码为当前页问题

    问题描述: 使用bootstrap table时遇到一个小问题,第一次查询数据未5页,翻页到第5页后,选中条件再次查询数据时,传到后端页码仍旧为5,而此时数据量小于5页,表格显示为未查询到数据. 处理 ...

  8. 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的格式写入 ...

  9. 基于Bootstrap的表格插件bootstrap-table

    写在前面: 表格在项目中是使用比较多的,bootstrap-table插件也是非常好用,而且表格页面也比较好看.这里也简单的记录下. 下面直接看demo吧,代码中都注释了,有些用法,这里没有用到,需要 ...

随机推荐

  1. Win 7 IE11不能下载文件,右键另存为也不行

    在IE11中不能下载文件,右键另存为也无效. 发现 在IE11中点击“INTERNET选项”后,IE临时文件夹的地址没有显示,大小为0,修改只能让设置在8-8MB,注销再登录后,一切设置无效. 问题就 ...

  2. 一步一步掌握java的线程机制(二)----Thread的生命周期

    之前讲到Thread的创建,那是Thread生命周期的第一步,其后就是通过start()方法来启动Thread,它会执行一些内部的管理工作然后调用Thread的run()方法,此时该Thread就是a ...

  3. linux记录sftp命令

    使用以下配置方法不需要配置chroot. 编辑sshd_config文件 vi /etc/ssh/sshd_config 增加: Subsystem sftp /usr/libexec/openssh ...

  4. MFC中无标题栏窗口的移动

    原文链接: http://blog.sina.com.cn/s/blog_6288219501015dwa.html   移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口,就需要 ...

  5. 【转载】Spring Cache介绍

    原文地址:http://www.cnblogs.com/rollenholt/p/4202631.html 缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个 ...

  6. Linux 下的hiredis的简单安装、测试*(转)

    上一章介绍的是如何安装Redis以及在Redis客户端上进行简单测试,但是我们一般安装完Redis之后,都是要结合编程语言对其进行应用的,hiredis是redis开源库对外发布的客户端API包,这一 ...

  7. centOS7 安装man中文手册

    [root@localhost ~]# yum list | grep man.*zh -.el7 base [root@localhost ~]# yum -y install man-pages- ...

  8. AndroidStudio创建项目时一直处于building“project name”gradle project info的解决办法

    AndroidStudio创建项目,最后一步finish后,一直长时间处于building“project name”gradle project info,界面就一直停留在如图所示: 谷歌自家的产品 ...

  9. Vue(五):Vue模板语法

    1.{{...}}(双大括号) 文本插值 <div id="app"> <p>{{ message }}</p> </div> 2. ...

  10. Unity GPU Instancing的使用尝试

    似乎是在Unity5.4中开始支持GPU Instacing,但如果要比较好的使用推荐用unity5.6版本,因为这几个版本一直在改. 这里测试也是使用unity5.6.2进行测试 在5.6的版本里, ...