poi导出excel定义单元格某几列为double类型
private static Log LOG = LogFactory.getLog(ExcelHelper.class);
private static int MaxSize = 1000000;
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static SXSSFWorkbook exportExcel(String excel_name, List<ExeclConfigDomain> headerList, List dataList) throws Exception {
SXSSFWorkbook wb = createExecl(headerList, dataList);
HttpServletResponse response = WebContext.getResponse();
OutputStream output = null;
/**
* 输出到excel
*/
try {
output = response.getOutputStream();
response.setContentType("application/x-msdownload:charset=gb2312");
response.setHeader("Content-Disposition", "attachment;filename=" + new String((excel_name).getBytes("gb2312"), "ISO-8859-1") + ".xlsx");
wb.write(output);
output.close();
wb.close();
} catch (IOException ie) {
LOG.error(ie.getMessage());
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
LOG.error(e.getMessage());
}
}
}
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + "aaa");
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
return wb;
}
/****
* 创建excel工作簿
* @param headerList
* @param dataList
* @return
* @throws Exception
*/
public static SXSSFWorkbook createExecl(List<ExeclConfigDomain> headerList,List dataList) throws Exception {
short rownum = 0;
SXSSFWorkbook wb = new SXSSFWorkbook(3000);
Sheet sheet = wb.createSheet("sheet1");
Row row0 = sheet.createRow(rownum);
// 设置execl 头
if (headerList != null && headerList.size() > 0) {
for (int i = 0; i < headerList.size(); i++) {
ExeclConfigDomain detailDomain = headerList.get(i);
addCellGbkHeader(wb, row0, detailDomain.getView_name(), i);
}
}
if (dataList != null && dataList.size() > 0) {
if (dataList.size() > MaxSize) {
throw new Exception("导出的数据量太大!");
}
for (int i = 0; i < dataList.size(); i++) {
rownum++;
Row row = sheet.createRow(rownum);
Object object = dataList.get(i);
for (int j = 0; j < headerList.size(); j++) {
ExeclConfigDomain detailDomain = headerList.get(j);
Cell cell = row.createCell(j);
String value = formatString(BeanHelper.getPropertyValue(detailDomain.getField_name(), object));
cell.setCellValue(value);
if(j>47 && j<=56){
if(value != null && !"".equals(value) ){
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
cell.setCellStyle(cellStyle);
cell.setCellValue(Double.valueOf(value));
}
}
}
}
}
return wb;
}
/***‘
* 设置行
* @param wb
* @param row
* @param value
* @param i
*/
public final static void addCellGbkHeader(SXSSFWorkbook wb, Row row, String value, int i) {
Cell cell = row.createCell(i);
cell.setCellValue(value);
}
/***
* 格式化字符串
* @param object
* @return
*/
public static String formatString(Object object) {
if (object instanceof Date) {
return sdf.format(object);
}
if (object == null) {
return "";
}
return String.valueOf(object);
}
1万+

被折叠的 条评论
为什么被折叠?



