使用JasperReport和poi导出Excel

本文介绍了在Java开发中使用JasperReport和Apache POI库导出Excel文件的步骤。首先,展示了导出界面和导出效果,接着列举了所需的jar包。然后,详细讲解了页面代码,包括导出按钮和`exportClick()`函数的实现。最后,提到了后台代码,包括JasperReport参数封装工具类和导出模板文件的使用。
摘要由CSDN通过智能技术生成

1、前言

在实际开发中,经常会遇到需将员工信息、设备信息导出到Excel。
使用JasperReport和poi导出Excel,如何实现呢
导出页面如下图:

这里写图片描述

导出的Excel如下图:
这里写图片描述

2、需要的jar包

JasperReport:
jasperreports-5.6.0.jar
jasperreports-fonts-5.0.0.jar

Poi:
poi-3.12.jar
poi-excelant-3.12.jar
poi-ooxml-3.12.jar
poi-ooxml-schemas-3.12.jar
poi-scratchpad-3.12.jar

3、页面代码:

导出按钮

<td>
    <input type="file" name="uploadFile" multiple id="uploadFile" accept=".xls,.xlsx" style="font-size: 10px;font-family: Microsoft YaHei;border-style: inset;border-width: 2px;padding: 1px;">                 
</td>
<td>
    <a onclick="exportClick();" 
       href="javascript:void(0);" 
       class="easyui-linkbutton ebsButton" 
       data-options="iconCls:'fa fa-1x fa-fw fa-file-excel-o',plain:true">
       导出
    </a>
</td>

exportClick()函数

//导出设备信息
function exportClick(){
   
   //查询要导出设备信息的数量
   $.ajax({
      type:"POST",
      dataType: "json", 
      cache:false,
      url:"/dev/base/dev/getAllDevCount.do",
      data: getFormData("searchForm"),
      async: false,
      success: function(data) {
   
         if(data > 0){
            //如果要导出的设备信息的数量大于0,执行数据导出操作
            $("#searchForm").attr("action",
                 "/dev/base/dev/exportDevs.do").submit();
         }else{
            layer.msg('未能查询到数据', {icon: 0});
         }
      },
      error: function(data) {
   
         layer.msg('导出失败,查询导出数据数量异常!', {icon: 0});
      }
  }); 
}

注:我们执行数据导出操作的代码是:

$("#searchForm").attr("action",
                 "/dev/base/dev/exportDevs.do").submit();

为了使用户操作体验更友好,也可以采用在弹出框中显示导出文件。
代码如下图:

var keyWords = $("#details_keyWords").val();
var url = "/dev/base/dev/exportDevs.do?keyWords="+keyWords;
//弹出窗口的宽度;
var iWidth=600; 
//弹出窗口的高度;
var iHeight=200; 
//获得窗口的垂直位置;
var iTop = (window.screen.availHeight-30-iHeight)/2; 
//获得窗口的水平位置;
var iLeft = (window.screen.availWidth-10-iWidth)/2; 
window.open(url,"","toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no,height="+iHeight+", width="+iWidth+", top="+iTop+", left="+iLeft); 

如下图:
这里写图片描述

4、后台代码:
注:查询要导出设备信息的数量的方法getAllDevCount()就不贴代码了

/**
 * 
 * 导出设备信息
 * @author张三 
 * @param response
 * @param devBean 导出的查询条件
 */
@RequestMapping("/exportDevs")
public void exportDevs(HttpServletResponse response,DeviceBean devBean){
   try {
      List<DeviceBean> result = deviceService.getAllDevs(bean);
     //JasperReport参数封装工具类 
     JasperReportCriteria criteria = new JasperReportCriteria();
     //模板名
     criteria.setJrxmlName("Device");
     criteria.setResult(result);
     //路径
     criteria.setJrxmlPath("/report/");
     criteria.setAutoBuildJasper(false);
     //设置工作薄name
     criteria.setSheetName("设备信息");
     //设置导出的文件名
     criteria.setReportFileName("设备信息"+DateTimeUtils.getNowDateString());//文件名
     //文件类型       
     criteria.setType(JasperReportCriteria.REPORT_TYPE_MSEXCEL);
     ReportExporter.exportReport(criteria, response);
   } catch (Excepti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值