EXCLE导出查询数据库查询的表记录

相信开发的小伙伴经常会遇到一些生成excel表的需求,我在网上找了下教程看的云里雾里的,所以自己摸索钻研了一个新的,分享出来,希望能帮到大家

这里需要导jar 包 百度 maven POI 选择个使用人多的就行了,这里就不写了,直接贴代码
这里贴出来了代码,讲解下哈 首先 DeviceRealTimeSVO 这里封装的查询条件,然后规定表格名称

public void export(HttpServletRequest request, HttpServletResponse response,@ModelAttribute DeviceRealTimeSVO Vo) throws Exception {
		List<DeviceRealTimeStatusVO> voContent = new ArrayList<DeviceRealTimeStatusVO>();
		
		//这里调用service层查询语句
		
		List<DeviceRealTimeStatuss> list = mds.selectlongTimeBydepartmenrId(Vo);
		
		//这里把值遍历塞进塞进去  (这个是必须有的)
		
		for (DeviceRealTimeStatuss deviceRealTimeStatuss : list) {
			DeviceRealTimeStatusVO vo = new DeviceRealTimeStatusVO();
			vo.setDeviceId(deviceRealTimeStatuss.getDeviceId());
			vo.setDeviceName(deviceRealTimeStatuss.getDeviceName());
			vo.setDeviceCode(deviceRealTimeStatuss.getDeviceCode());
			vo.setCompanyId(deviceRealTimeStatuss.getCompanyId());
			vo.setCompanyName(deviceRealTimeStatuss.getCompanyName());
			vo.setDepartName(deviceRealTimeStatuss.getDepartName());
			vo.setDeviceLebal(deviceRealTimeStatuss.getDeviceLebal());
			vo.setLoginIp(deviceRealTimeStatuss.getLoginIp());
			vo.setModelSpecification(deviceRealTimeStatuss.getModelSpecification());
			if (deviceRealTimeStatuss.getStatus().equals("1")) {
				vo.setStatus("换装夹");
			}
			if (deviceRealTimeStatuss.getStatus().equals("2")) {
				vo.setStatus("运行");
			}
			if (deviceRealTimeStatuss.getStatus().equals("3")) {
				vo.setStatus("关机");
			}
			if (deviceRealTimeStatuss.getStatus().equals("4")) {
				vo.setStatus("停机");
			}
			if (deviceRealTimeStatuss.getStatus().equals("5")) {
				vo.setStatus("调试");
			}
			vo.setTeamId(deviceRealTimeStatuss.getTeamId());
			vo.setTeamName(deviceRealTimeStatuss.getTeamName());
			vo.setTodayProcessingNumber(deviceRealTimeStatuss.getTodayProcessingNumber());
			vo.setTypeCode(deviceRealTimeStatuss.getTypeCode());
			voContent.add(vo);
		}
       
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet("Sheet1");
		HSSFRow row = sheet.createRow(0);
		HSSFCellStyle style = wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		HSSFCell cell = row.createCell(0);
		cell.setCellValue("#");
		cell.setCellStyle(style);
		
		//这里对应每行的名称
		
		cell = row.createCell(1);
		cell.setCellValue("资产编号");
		cell.setCellStyle(style);

		cell = row.createCell(2);
		cell.setCellValue("设备名称");
		cell.setCellStyle(style);

		cell = row.createCell(3);
		cell.setCellValue("设备编码");
		cell.setCellStyle(style);

		cell = row.createCell(4);
		cell.setCellValue("类别");
		cell.setCellStyle(style);

		cell = row.createCell(5);
		cell.setCellValue("型号规格");
		cell.setCellStyle(style);

		cell = row.createCell(6);
		cell.setCellValue("标签");
		cell.setCellStyle(style);

		cell = row.createCell(7);
		cell.setCellValue("归属公司");
		cell.setCellStyle(style);

		cell = row.createCell(8);
		cell.setCellValue("使用部门");
		cell.setCellStyle(style);

		cell = row.createCell(9);
		cell.setCellValue("使用班组");
		cell.setCellStyle(style);

		cell = row.createCell(10);
		cell.setCellValue("实时状态");
		cell.setCellStyle(style);

		cell = row.createCell(11);
		cell.setCellValue("今日加工数");
		cell.setCellStyle(style);

		cell = row.createCell(12);
		cell.setCellValue("ip地址");
		cell.setCellStyle(style);
		
      //这里表示每行名称对应的值
      
		for (int i = 0; i < voContent.size(); i++) {
			row = sheet.createRow(i + 1);
			row.createCell(0).setCellValue(i + 1);
			row.createCell(1).setCellValue(voContent.get(i).getDeviceId());
			row.createCell(2).setCellValue(voContent.get(i).getDeviceName());
			row.createCell(3).setCellValue(voContent.get(i).getDeviceCode());
			row.createCell(4).setCellValue(voContent.get(i).getTypeCode());
			row.createCell(5).setCellValue(voContent.get(i).getModelSpecification());
			row.createCell(6).setCellValue(voContent.get(i).getDeviceLebal());
			row.createCell(7).setCellValue(voContent.get(i).getCompanyName());
			row.createCell(8).setCellValue(voContent.get(i).getDepartName());
			row.createCell(9).setCellValue(voContent.get(i).getTeamName());
			row.createCell(10).setCellValue(voContent.get(i).getStatus());
			row.createCell(11).setCellValue(voContent.get(i).getTodayProcessingNumber());
			row.createCell(12).setCellValue(voContent.get(i).getLoginIp());
		}
		try {
			OutputStream output = response.getOutputStream();
			response.reset();
			
			//这里表示访问时,文件的名称  
			
			String fileName = "设备实时状态";
			response.setContentType("application/force-download");// 设置强制下载不打开
			
			// 解决文件名乱码问题
			
			String userAgent = request.getHeader("User-Agent");
			if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
				fileName = URLEncoder.encode(fileName, "UTF-8");
			} else {
				fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
			}
			response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");
			response.setContentType("application/msexcel");
			wb.write(output);
			output.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

其他的就没啥了,把我上述的几点根据自己需求和逻辑做相应的修改下就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值