1、生成Excel文件
/***
* 生成excel文件
* @param dateList:封装成map对象的list数据,map的value数据顺序和excel导出数据一致 不然会出现列数据错乱
* @param headerArr:excel title显示值数组
* @param sheetName:工作簿名称
* @return HSSFWorkbook:对象
*/
public static HSSFWorkbook down(List<Map<String,Object>> dateList, String[] headerArr,String sheetName){
HSSFWorkbook wb = new HSSFWorkbook();
final int maxrownum = 65535;
int sheetnum = dateList.size()/maxrownum+1;
for(int num=1; num<sheetnum+1; num++){
HSSFSheet sheet = wb.createSheet(sheetName+num);
sheet.setDefaultColumnWidth((short) 15);
HSSFRow row = sheet.createRow((int) 0);
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = null;
//画出title
for (int i = 0; i < headerArr.length; i++) {
cell = row.createCell((short) i);
cell.setCellValue(headerArr[i]);
cell.setCellStyle(style);
}
//画出数据
int maxdatanum = dateList.size()-(num-1)*maxrownum;
for(int i=0; i<maxrownum&&i<maxdatanum; i++){
row = sheet.createRow((int) i + 1);
Map<String,Object> map = dateList.get((num-1)*maxrownum+i);
int j = 0;
for (Object obj : map.values()) {
String value = (obj == null)?"":String.valueOf(obj);
row.createCell((short) j).setCellValue(value);
j++;
}
}
}
return wb;
}
2、导出Excel文件
/*
* 导出Excel
* @Param filePath 路径
* @Param fileName 文件名
* */
public void export(HSSFWorkbook wb,String filePath,String fileName) throws IOException{
//全路径
String filefull=filePath+File.separator+fileName;
File floder=new File(filePath);
if (!floder.exists() && !floder.isDirectory())
{
floder.mkdirs();
}
FileOutputStream fout = null;
try {
fout = new FileOutputStream(filefull);
wb.write(fout);
fout.flush();
fout.close();
}
catch (Exception e)
{
fout.close();
e.printStackTrace();
}
}
3、下载Excel文件