/**
* 导出到excel
* @param fileName
* @param request
* @param response
* @param columnList
* @param contentList
* @param rows
* @return
* @throws Exception
*/
public static ActionForward exportExcel(String fileName,
HttpServletRequest request,
HttpServletResponse response,
List<String> columnList,
List<Object[]> contentList,
List<Object[]> rows) throws Exception {
// 表格开始
WorkBook workbook = getWorkBook(fileName, request, columnList, contentList, rows);
ExcelOutput output = new ExcelOutputImp();
output.output(workbook, response);
return null;
}
/**
* 数据填充到excel
* @param fileName
* @param request
* @param columnList
* @param contentList
* @param rows
* @return
* @throws Exception
*/
public static WorkBook getWorkBook(String fileName, HttpServletRequest request, List<String> columnList,
List<Object[]> contentList, List<Object[]> rows) throws Exception {
WorkBook workbook = new WorkBook();
workbook.setLocale(request.getLocale());
int size = contentList.size();
int sheetSize = 1;
int perSheetSize = 60000;
if(size > perSheetSize) {
sheetSize = (int)Math.ceil((float)size / (float)perSheetSize);
}
for(int i = 0; i < sheetSize; i ++) {
int sheetNo = i + 1;
Sheet sheet = new Sheet();
if(sheetSize > 1) {
sheet.setTitle(fileName + "_" + sheetNo);
} else {
sheet.setTitle(fileName);
}
if(rows != null && i == 0 && !rows.isEmpty()) {
sheet.setHeadContentList(rows);
}
Column col = null;
int count=1;
for (String str : columnList) {
col = new Column();
col.setTitle(str);
sheet.addColumn(col);
if(fileName.equals("导入合同信息模板")){
if(count<6){
col.setRedFont(true);
}
}
count++;
}
int fromInex = (sheetNo - 1) * perSheetSize;
int toIndex = sheetNo * perSheetSize;
if(toIndex > size) {
toIndex = size;
}
List<Object[]> tmpList = contentList.subList(fromInex, toIndex);
sheet.setContentList(tmpList);
workbook.addSheet(sheet);
}
workbook.setFilename(fileName);
return workbook;
}