java mvc 导出excel_用SpringMvc实现Excel导出功能

public class JPoiExcelView extendsAbstractExcelView{private static Logger logger = LoggerFactory.getLogger(JPoiExcelView.class);

String[] tilte= new String[]{"序号","资产名称","资产类型","创建时间","删除人","删除时间","删除主机"};

List categoryList = null;

List userList = null;

HSSFCellStyle headerStyle= null;

HSSFCellStyle contextStyle= null;

@SuppressWarnings("unchecked")

@Overrideprotected void buildExcelDocument(Mapmodel,

HSSFWorkbook workbook,

HttpServletRequest request,

HttpServletResponse response){

OutputStream os= null;try{

categoryList= (List)model.get("allCategory");

userList= (List)model.get("allUser");

String filename= (String)model.get("filename");//String total = (String)model.get("total");//响应信息,弹出文件下载窗口

response.setContentType("APPLICATION/OCTET-STREAM");

response.setHeader("Content-Disposition", "attachment; filename="

+ URLEncoder.encode(filename, "UTF-8"));

os=response.getOutputStream();

HSSFSheet sheet= workbook.createSheet("资产信息");

headerStyle=getHeader(workbook);

contextStyle=getContext(workbook);

String titleName= "资产信息";//添加标题和文件列表头

addTitle(sheet,tilte,titleName);//添加文件信息

List list = (List)model.get("items");

addContextByList(sheet,list,tilte.length);

workbook.write(os);

}catch(Throwable e) {

logger.error("资产信息导出出错:"+e.getMessage(),e);

}finally{try{

os.flush();

os.close();

}catch(Throwable e) {

logger.error("资产信息导出Excel出错:"+e.getMessage(),e);

}

}

}//添加标题和列头信息

public voidaddTitle(HSSFSheet sheet, String[] assettitle, String total,String titleName){

HSSFRow row= sheet.createRow(0);

HSSFCell cell= row.createCell(2);

cell.setCellValue(titleName+"(共有"+total+"条)");

row= sheet.createRow(1);for (int i = 0; i < assettitle.length; i++) {

cell=row.createCell(i);

cell.setCellValue(assettitle[i]);

}

}//添加标题和列头信息

public voidaddTitle(HSSFSheet sheet, String[] assettitle,String titleName) {//添加标题第一行 合并单元格

sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, assettitle.length-1));

HSSFRow row= sheet.createRow(0);

HSSFCell cell= row.createCell(0);

cell.setCellValue(titleName);

cell.setCellStyle(headerStyle);

row= sheet.createRow(1);for (int i = 0; i < assettitle.length; i++) {

cell=row.createCell(i);

cell.setCellValue(assettitle[i]);

cell.setCellStyle(contextStyle);

}

}//添加所有文件信息 从第三行开始添加//{"序号","资产名称","资产类型","创建时间","删除人","删除时间","删除主机"};

@SuppressWarnings("unchecked")private void addContextByList(HSSFSheet sheet, List list, intlength){try{

HSSFRow row= null;

HSSFCell cell= null;if (list!=null) {

List mObjects = (List)list;

MObject mObject= null;

String value= "";for (int i = 0; i < list.size(); i++) {

row= sheet.createRow(i+2);for (int j = 0; j < length; j++) {

mObject=mObjects.get(i);if(j==0){

cell=row.createCell(j);

cell.setCellValue(i+"");

cell.setCellStyle(contextStyle);

}else{

value=getValue(mObject,j);

cell=row.createCell(j);

cell.setCellValue(value);

cell.setCellStyle(contextStyle);

}

}

}for (int j = 1; j < length; j++) {

sheet.autoSizeColumn(j);//单元格宽度 以最大的为准

}

}else{

row= sheet.createRow(2);

cell= row.createCell(0);

}

}catch(Throwable e) {

logger.error("填充内容出现错误:"+e.getMessage(),e);

}

}//根据列名获取值,先写死,之后再想其他办法//{"序号","资产名称","资产类型","创建时间","删除人","删除时间","删除主机"};

private String getValue(MObject mObject, intj) {switch(j) {case 1:returnmObject.getName();case 2:return getAssetCategory(objectToString(mObject.getCategoryId()),null);case 3:returnobjectToString(mObject.getCreatedTime());case 4:return getUserInfo(objectToString(mObject.getDeletedBy()),null);case 5:returnobjectToString(mObject.getDeletedTime());case 6:return objectToString(mObject.getExtraData()==null? "" :mObject.getExtraData().get("delHostName"));default:

}return "";

}privateString objectToString(Object object){if(object==null){return "";

}else{if(object instanceofDate){

DateFormat from_type= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date=(Date)object;returnfrom_type.format(date);

}else{return(String)object;

}

}

}//标题样式

public staticHSSFCellStyle getHeader(HSSFWorkbook workbook){

HSSFCellStyle format=workbook.createCellStyle();

HSSFFont font=workbook.createFont();

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗

font.setFontName("黑体");

font.setFontHeightInPoints((short)16);

format.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

format.setAlignment(HSSFCellStyle.ALIGN_CENTER);

format.setFont(font);returnformat;

}//内容样式

public staticHSSFCellStyle getContext(HSSFWorkbook workbook){

HSSFCellStyle format=workbook.createCellStyle();

HSSFFont font=workbook.createFont();

font.setFontName("宋体");

format.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

format.setAlignment(HSSFCellStyle.ALIGN_CENTER);

format.setFont(font);returnformat;

}//获取用户名称

/*** id 用户id

* key:用于扩展属性的key值(若有)

**/

publicString getUserInfo(String id,String key){if(userList !=null&&userList.size() > 0){for(User user : userList) {if( user.getId().equals(id))returnuser.getName();

}

}return "";

}//获取类型名称

/*** id 类型id

* key:用于扩展属性的key值 (若有)

**/

publicString getAssetCategory(String id,String key){if(categoryList!=null && categoryList.size()>0){for(AssetCategoryDefine assetCategoryDefine : categoryList) {if(assetCategoryDefine.getId().equals(id))returnassetCategoryDefine.getName();

}

}return "";

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值