/**
* 导出到Excel
* @Title: exportExcel
* @param String pn,HttpSession session
* @return ModelAndView 返回类型
* @author
* @throws Exception
*/
@SuppressWarnings("unchecked")
@RequestMapping(value="/export-uarea/{pn}",method=RequestMethod.GET)
@ResponseBody
public ModelAndView exportExcel(@PathVariable("pn") String pn,HttpSession session) throws Exception{
ModelAndView modelAndView = new ModelAndView();
// 创建Map对象,用于存入列名字与列值
Map<String,Object> dataMap = new HashMap<String,Object>();
// 创建titles对象,对象中的值为Excel的列名
List<String> titles = new ArrayList<String>();
// 向titles对象存入列名 start
titles.add("区域名称"); //1
titles.add("区域编码"); //2
titles.add("描述说明"); //3
titles.add("删除标志"); //4
titles.add("记录日期"); //5
titles.add("记录人"); //6
titles.add("修改日期"); //7
titles.add("修改人"); //8
titles.add("备注"); //9
// 向titles对象存入列名 end
// 将dataMap对象存入Excel表列名的数组
dataMap.put("titles", titles);
// 获取配件订单列表
List<UArea> uAreaList = null;
if("-1".equals(pn)){
uAreaList = uAreaService.queryAllUArea();
}else{
uAreaList = (List<UArea>) session.getAttribute("uAreas");
}
List<Map<Integer,Object>> listMap = new ArrayList<Map<Integer,Object>>();
for(int i=0;i<uAreaList.size();i++){
Map<Integer, Object> map = new HashMap<Integer, Object>();
map.put(0, uAreaList.get(i).getAreaName()); //1
map.put(1, uAreaList.get(i).getAreaCode()); //2
map.put(2, uAreaList.get(i).getDescription()); //3
map.put(3, uAreaList.get(i).getDeleteFlag()); //4
map.put(4, uAreaList.get(i).getInputDate()); //5
map.put(5, uAreaList.get(i).getInputId()); //6
map.put(6, uAreaList.get(i).getUpdateDate()); //7
map.put(7, uAreaList.get(i).getUpdateId()); //8
map.put(8, uAreaList.get(i).getRemark()); //9
listMap.add(map);
}
dataMap.put("listMap", listMap);
// 创建Excel工具类的 excelView对象
ObjectExcelView excelView = new ObjectExcelView();
// 创建Excel表
modelAndView = new ModelAndView(excelView,dataMap);
return modelAndView;
}
返回ModelAndView对象 会自动加载ObjectExcelView();
package com.sinosoft.autopart.platform.common.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.web.servlet.view.document.AbstractExcelView;
/**
* 导入到EXCEL 类名称:ObjectExcelView.java
* @author link
*
*/
public class ObjectExcelView extends AbstractExcelView {
@SuppressWarnings("unchecked")
@Override
protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Date date = new Date();
String filename = this.dateToStr(date, "yyyyMMddHHmmss");
HSSFSheet sheet;
HSSFCell cell;
HSSFRow row;
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
sheet = workbook.createSheet("sheet1");
List<String> titles = (List<String>) model.get("titles");
int len = titles.size();
HSSFCellStyle headerStyle = workbook.createCellStyle(); // 标题样式
headerStyle.setAlignment(HorizontalAlignment.CENTER);;
headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);;
HSSFFont headerFont = workbook.createFont(); // 标题字体
headerFont.setBold(true);
headerFont.setFontHeightInPoints((short) 11);
headerStyle.setFont(headerFont);
short width = 20, height = 25 * 20;
sheet.setDefaultColumnWidth(width);
row = sheet.createRow(0);
for (int i = 0; i < len; i++) { // 设置标题
String title = titles.get(i);
cell = row.createCell(i);
cell.setCellStyle(headerStyle);
cell.setCellValue(title);
}
sheet.getRow(0).setHeight(height);
HSSFCellStyle contentStyle = workbook.createCellStyle(); // 内容样式
contentStyle.setAlignment(HorizontalAlignment.CENTER);
HSSFDataFormat format= workbook.createDataFormat();
contentStyle.setDataFormat(format.getFormat("yyyy-mm-dd HH:MM:SS"));
HSSFFont contentFont = workbook.createFont(); // 标题字体
contentFont.setFontHeightInPoints((short) 11);
contentStyle.setFont(contentFont);
List<Map<Integer, Object>> listMap = (List<Map<Integer, Object>>) model.get("listMap");
int varCount = listMap.size();
for (int i = 0; i < varCount; i++) {
Map<Integer, Object> uArea = listMap.get(i);
row = sheet.createRow(i+1);
for(int j=0;j<len;j++){
cell = row.createCell(j);
cell.setCellStyle(contentStyle);
if(j==len-3||j==len-5){
cell.setCellValue((uArea.get(j)!=null?(Date)uArea.get(j):new Date(1900-01-01)));
}else{
cell.setCellValue((String)(uArea.get(j)!=null?uArea.get(j):""));
}
}
}
}
/**
* 按照参数format的格式,日期转字符串
* @param date
* @param format
* @return
*/
public String dateToStr(Date date,String format){
if(date!=null){
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}else{
return "";
}
}
}