POI框架的Excel导出(后端不分页)

本文档详细介绍了如何在后端使用POI框架进行Excel导出操作,涵盖了从jsp页面触发,到js处理,再到导出工具类的实现以及controller层的控制流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp

<button id="js-export" type="button" class="btn blue">导出Excel</button> 

js

<script>
	$("#js-export").click(function(){
		var siteName = $("#siteName").val();//施工名称
		 if(siteName!=""&& siteName!=undefined){
			  siteName=siteName.replace(/\s*/g,"");       
   			 siteName =encodeURI(encodeURI(siteName));
     		  }
     		  console.log(siteName);
 		  var type=$("#type option:selected").val();//施工名称
  		 var projectManager=$("#pm option:selected").val();//项目经理
 		 console.log(projectManager);
		  var during = $("#during").val();//时间范围
		  var companyA = $("#companyA_id").val();//负责单位id
		var projectState=$("#projectState option:selected").val();//项目状态
		 window.location.href="export.action?siteName="+siteName+"&type="+type+"&projectManager="+projectManager+"&during="+during+"&companyA="+companyA+"&projectState="+projectState
	 });

</script>

导出Excel工具类


public class ExcelUtil {
	
	/**
  * 导出Excel
  * @param sheetName  sheet名称
  * @param title  标题
  * @param values 内容
  * @param wb  HSSFWorkbook对象
  * @param columnWidth  列宽
  * @return
  */
	public  static HSSFWorkbook getHSSFWorkbook(String sheetName,String[] title,String[][] values, HSSFWorkbook wb){
		// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
	        if(wb == null){
	            wb = new HSSFWorkbook();
	        }
		// 设置标题样式  
	        HSSFCellStyle titleStyle = wb.createCellStyle();  
	        // 设置单元格边框样式  
	        titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框 细边线 
	        titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 下边框 细边线 
	        titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框 细边线 
	        titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框 细边线 
	        // 设置单元格对齐方式 
	        titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
	        titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中  
	        // 设置字体样式
	        Font titleFont = wb.createFont();
	        titleFont.setFontHeightInPoints((short) 15);// 字体高度
	        titleFont.setFontName("黑体");// 字体样式
	        titleStyle.setFont(titleFont);

		 // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
      		  HSSFSheet sheet = wb.createSheet(sheetName);
      		   sheet.setColumnWidth((short) 0, (short) 8500);// 设置列宽
	            sheet.setColumnWidth((short) 1, (short) 2500);// 设置列宽
	            sheet.setColumnWidth((short) 2, (short) 5500);// 设置列宽
	            sheet.setColumnWidth((short) 3, (short) 2500);// 设置列宽
	            sheet.setColumnWidth((short) 4, (short) 5000);// 设置列宽
	            sheet.setColumnWidth((short) 5, (short) 9500);// 设置列宽

		 // 第三步,在sheet中添加表头第0行
	       HSSFRow row = sheet.createRow(0);
	        HSSFCell sequenceCell = row.createCell(0);

		// cell列 从0开始 第一列添加序号
	       sequenceCell.setCellValue("序号");
	        sequenceCell.setCellStyle(titleStyle); //单元格引用样式
	        sheet.autoSizeColumn(20);// 自动设置宽度
	
		// 第四步,创建单元格,并设置值表头 设置表头居中
     		HSSFCellStyle style = wb.createCellStyle();

			// 设置数据边框  
	       style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
	        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
	        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
	        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
	        // 设置居中样式
	        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平居中 
	        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中  
	        // 设置数据字体  
	        Font dataFont = wb.createFont();
	        dataFont.setFontHeightInPoints((short) 12);// 字体高度 
	        dataFont.setFontName("黑体"); // 字体
	        style.setFont(dataFont);

		 // style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

		//声明列对象
	        HSSFCell cell = null;
		
		//创建标题
	        for(int i=0;i<title.length;i++){
		cell = row.createCell(i);
	            cell.setCellValue(title[i]);
	            cell.setCellStyle(style);
	        }

		 //创建内容
       		 for(int i=0;i<values.length;i++){
			row = sheet.createRow(i + 1);
           		 for(int j=0;j<values[i].length;j++){
				//将内容按顺序赋给对应的列对象
                		row.createCell(j).setCellValue(values[i][j]);
			}
       		 }
	
	return wb;

					}
			
				}

controller层

/**
 * 导出Excel表
 * @param request
 * @param response
 * @param map
 * @throws Exception
 */
@RequestMapping("export")
@ResponseBody
public void export(HttpServletRequest request,HttpServletResponse response,ModelMap modelmap) throws Exception {
	//获取数据
   UserInfo user = UserHolder.getCurrentUser();
   Map<String, Object> map=new HashMap<String,Object>();
   String companyA=StringUtils.trimToEmpty((String)request.getParameter("companyA"));
   System.out.println("负责单位为-----------------"+companyA);
      map.put("companyA", companyA);
      String during=StringUtils.trimToEmpty((String)request.getParameter("during"));
      String startTime="";
      String endTime="";
   if (during!="") {
	 String[] split = during.split(" - ");
          System.out.println(split.length);
          startTime=split[0];
          endTime=split[1];

}
map.put("startTime", startTime);
   map.put("endTime", endTime);
   String type=StringUtils.trimToEmpty((String)request.getParameter("type"));
   String siteName=StringUtils.trimToEmpty((String)request.getParameter("siteName"));
   if (siteName!=""&&siteName!=null) {
	siteName = URLDecoder.decode(siteName, "UTF-8");
}
System.out.println("siteName=="+siteName);
   String projectState=StringUtils.trimToEmpty((String)request.getParameter("projectState"));
   String projectManager=StringUtils.trimToEmpty((String)request.getParameter("projectManager"));
         map.put("type", type);
   map.put("siteName", siteName);
   map.put("projectState", projectState);
   map.put("projectManager", projectManager);
   System.out.println("类型为-----------------"+type);
   System.out.println("projectState-----------------"+projectState);
   System.out.println("projectManager-----------------"+projectManager);

if (UserHolder.getCurrentRoles().contains("004")) {
    map.put("companyA", user.getDeptId());
    }
if (UserHolder.getCurrentRoles().contains("005")) {
    map.put("userid", user.getId());
    map.put("companyA", user.getDeptId());
    }
if (UserHolder.getCurrentRoles().contains("006")) {
    map.put("companyA", user.getDeptId());
    }

List<Site> list = siteService.AllSiteList(map);
        System.out.println(list.size());
       //excel标题
       String[] title = {"施工名称","施工类型","负责单位","项目状态","项目经理","开始时间-结束时间"};
       
//excel文件名
       String fileName = "施工现场管理"+System.currentTimeMillis()+".xls";

//sheet名
       String sheetName = "施工现场管理";

 String[][] content = new String[list.size()][];
 for (int i = 0; i < list.size(); i++) {
     content[i] = new String[title.length];
        Site site = list.get(i);
        
content[i][0] = site.getSiteName();//施工名称
        content[i][1] = site.getType_text();//施工类型
       content[i][2] = site.getCompanyA_text();//负责单位
        content[i][3] =  site.getProjectState_text();//项目状态
        content[i][4] = site.getProjectManager_text();//项目经理
        
        Date begin_date = site.getBegin_date();
        Date end_date = site.getEnd_date();

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String begin_date1 = sdf.format(begin_date);
        String end_date1 = sdf.format(end_date);
        content[i][5] =  begin_date1+"---"+end_date1;//开始时间-结束时间

}
//创建HSSFWorkbook 
       HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
//响应到客户端
	try {
	 this.setResponseHeader(response, fileName);
	    OutputStream os = response.getOutputStream();
	    wb.write(os);
	    os.flush();
	    os.close();
	    } catch (Exception e) {
	 // TODO Auto-generated catch block
	 e.printStackTrace();
	}
	
	
}


//发送响应流方法
public void setResponseHeader(HttpServletResponse response, String fileName) {
    try {
        try {
            fileName = new String(fileName.getBytes(),"ISO8859-1");
	} catch (UnsupportedEncodingException e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	            }
        response.setContentType("application/octet-stream;charset=ISO8859-1");
        response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
        response.addHeader("Pargam", "no-cache");
        response.addHeader("Cache-Control", "no-cache");
		} catch (Exception ex) {
		        ex.printStackTrace();

		}


	}
	```




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值