POI使用Excel模版文件导出

首先从客户需求入手,制定标准的excel表头样式,如下图143011_UEpq_2354306.jpg

然后就是获取数据,引用文件生成临时workbook

List<ExportDetailVO> details = this.getPostsService().getExportList();
InputStream fis = new FileInputStream(new File(Constants.LOGO_PATH + File.separator + "ExportTamplate.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);

设置表中数据部分的样式以及超链接的样式

CellStyle bodyStyle = workbook.createCellStyle();
bodyStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
bodyStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
bodyStyle.setBorderBottom(HSSFCellStyle. BORDER_THIN);
bodyStyle.setBottomBorderColor(new HSSFColor.BLACK().getIndex());
bodyStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
bodyStyle.setRightBorderColor(new HSSFColor.BLACK().getIndex());
Font bodyFont = workbook.createFont();
bodyFont.setFontHeightInPoints((short)10);
bodyFont.setFontName("微软雅黑");
bodyFont.setBoldweight(Font.BOLDWEIGHT_NORMAL); 
bodyFont.setColor(HSSFColor.BLACK.index);    
bodyStyle.setFont(bodyFont);
bodyStyle.setWrapText(true);
CellStyle linkStyle = workbook.createCellStyle();
linkStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
linkStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
linkStyle.setBorderBottom(HSSFCellStyle. BORDER_THIN);
linkStyle.setBottomBorderColor(new HSSFColor.BLACK().getIndex());
linkStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
linkStyle.setRightBorderColor(new HSSFColor.BLACK().getIndex());
XSSFFont cellFont= workbook.createFont();
cellFont.setColor(HSSFColor.BLUE.index);
linkStyle.setFont(cellFont);

在接下来就是循环插入数据,并生成excel文件了

for(int i=0; i<details.size(); i++){
ExportDetailVO vo = details.get(i);
Row tempRow = sheet.createRow(i+6);
for(int j=0;j<23;j++){
	Cell tempCell = tempRow.createCell(j);
	tempCell.setCellStyle(bodyStyle);
	switch(j){
		case 0:
			tempCell.setCellValue(i+1);
			break;
		case 1:
			tempCell.setCellValue(vo.getTitle());
			break;
		case 2:
			tempCell.setCellStyle(linkStyle);
			tempCell.setCellFormula("HYPERLINK(\"" + vo.getPostUrl() + "\",\"" + "【原】"+ "\")");
			break;
		case 3:
			tempCell.setCellValue(vo.getForumName());
			break;
		case 4:
			tempCell.setCellValue(vo.getEffect());
			break;
		case 5:
			tempCell.setCellValue(vo.getHits());
			break;
		case 6:
			tempCell.setCellValue(vo.getReply());
			break;
		case 7:
			tempCell.setCellValue(vo.getPuName());
			break;
		case 8:
			tempCell.setCellValue(vo.getForumNick());
			break;
		case 9:
			if(vo.getGender()){
			    tempCell.setCellValue("男");
			}else{
		            tempCell.setCellValue("女");
			}
			break;
		case 10:
			tempCell.setCellValue(vo.getPhone());
			break;
		case 11:
			tempCell.setCellValue(vo.getQqId());
			break;
		case 12:
			tempCell.setCellValue(vo.getWeChatId());
			break;
		case 13:
			tempCell.setCellValue(vo.getPuAge());
			break;
		case 14:
			tempCell.setCellValue(vo.getIndustry());
			break;
		case 15:
			tempCell.setCellValue(vo.getCareer());
			break;
		case 16:
			tempCell.setCellValue(vo.getVehicleModel());
			break;
		case 17:
			tempCell.setCellValue(vo.getLiciencePlate());
			break;
		case 18:
			tempCell.setCellValue(vo.getFrameNumber());
			break;
		case 19:
			tempCell.setCellValue(vo.getPicupLocation());
			break;
		case 20:
			tempCell.setCellValue(vo.getClub());
			break;
		case 21:
			tempCell.setCellValue(vo.getClubRole());
			break;
		case 22:
			tempCell.setCellValue(vo.getAddress());
			break;
		default:
			break;
	        }
        }
}
String fileName = "吉利博瑞车主口碑邀约名单.xls";
response.setHeader("content-disposition", "attachment; filename="  + new String(fileName.getBytes("gb2312"), "ISO8859-1" ));
response.setContentType("application/octet-stream");
OutputStream os = response.getOutputStream();
workbook.write(os);


转载于:https://my.oschina.net/u/2354306/blog/619276

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值