Java导出Excel表格

本文介绍了一个使用Java导出Excel表格的具体示例,包括创建Excel文件、设置样式、填充数据以及通过HTTP响应实现文件下载的过程。示例中详细展示了如何从数据库查询数据并将其转换为Excel表格格式。

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

public class ExportExcel {
	
	// 下载Excel表格
	String[] excelHeader = { "监控点编号", "监控点名称", "抓拍时间", "捕获数量" };

	public HSSFWorkbook export(List<Map<String, Object>> list) throws ParseException {
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet("统计报表");
		HSSFRow row = sheet.createRow((int) 0);

		// 设置字体
		HSSFFont font = wb.createFont();
		font.setFontHeightInPoints((short) 20); // 字体高度
		font.setColor(HSSFFont.COLOR_RED); // 字体颜色
		font.setFontName("黑体"); // 字体
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 宽度
		font.setItalic(true); // 是否使用斜体

		// 设置单元格类型
		HSSFCellStyle cellStyle = wb.createCellStyle();
		cellStyle.setFont(font);
		cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平布局:居中
		cellStyle.setWrapText(true);

		HSSFCellStyle style = wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

		for (int i = 0; i < excelHeader.length; i++) {
			HSSFCell cell = row.createCell(i);
			cell.setCellValue(excelHeader[i]);
			cell.setCellStyle(style);
			sheet.autoSizeColumn(i);
		}
		for (int i = 0; i < list.size(); i++) {
			row = sheet.createRow(i + 1);
			sheet.autoSizeColumn((short) 0); // 自动调整第一列宽度
			sheet.autoSizeColumn((short) 1); // 自动调整第二列宽度
			sheet.autoSizeColumn((short) 2); // 自动调整第三列宽度
			sheet.autoSizeColumn((short) 3); // 自动调整第四列宽度

			Map<String, Object> map = list.get(i);
			row.createCell(0).setCellValue((String) map.get("no"));
			row.createCell(1).setCellValue((String) map.get("name"));
			row.createCell(2).setCellValue((String) (map.get("hours")));
			row.createCell(3).setCellValue(map.get("num").toString());
		}
		return wb;
	}
		
}
//controller层
@RequestMapping(value="/excelExport")
	public void exportExcel(HttpServletRequest request, HttpServletResponse response)     
	    throws Exception {    
	            
			//分页
			Integer currentPage = SBDUtility.getInteger(request.getParameter("currentPage"), 1);
			Integer pageSize = SBDUtility.getInteger(request.getParameter("pageSize"), 15);	
			Integer objId = SBDUtility.getInteger(request.getParameter("objId"), 0);
			Integer level = SBDUtility.getInteger(request.getParameter("level"), 0);	
			Integer datePeriod = SBDUtility.getInteger(request.getParameter("datePeriod"), 1);		
		String currentStartDate = SBDUtility.getString(request.getParameter("currentStartDate"), "");
			String currentEndDate = SBDUtility.getString(request.getParameter("currentEndDate"), "");
			String date_sp = SBDUtility.getSpiTimes(2, -(datePeriod.intValue()));
			UsersVOExt u = (UsersVOExt)request.getSession().getAttribute("userSession");
			Map<String,Object> condMap = new HashMap<String,Object>();
			
			//把从前台页面获取到的值放到map里
			condMap.put("roleId", u.getRole_id());
			condMap.put("companyId", u.getCompany_id());
			condMap.put("objId", objId);
			condMap.put("level", level);
			condMap.put("date_sp", date_sp);
			condMap.put("currentStartDate", currentStartDate);
			condMap.put("currentEndDate", currentEndDate);
			//分页
			condMap.put("currentPage", currentPage);
			condMap.put("pageSize", pageSize);
			
			Map<String, Object> mapList = this.captureInfoService.findCaptureInfoService(condMap);
 
			List<Map<String, Object>> list = (List<Map<String, Object>>) mapList.get("records");
			
	        //下载Excel
	        HSSFWorkbook wb = export(list);    
	        response.setContentType("application/vnd.ms-excel");    
	        response.setHeader("Content-disposition", "attachment;filename=StatisticalReport.xls");    
	        OutputStream ouputStream = response.getOutputStream();    
	        wb.write(ouputStream);    
	        ouputStream.flush();    
	        ouputStream.close();    } 
 
//前台页面-点击下载按钮
function btnExcel(){			
       location.href="../excelExport.action";
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值