1.导出excel方法调用:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.OutputStream;
@Controller
@RequestMapping(value = "/collection")
public class CollectionAction {
@RequestMapping("/exportExcel4ServiceFee")
public void exportExcel4ServiceFee(LoanSplitModel loanSplitModel,HttpServletRequest request, HttpServletResponse response) {
PageView<LoanSplitModel> pageView = collectionService.downPageView4RemindersServiceFee(loanSplitModel);
int count = 1;
List<String[]> list = new ArrayList<String[]>();
list.add(new String[]{"序号","合同编号","客户姓名","合同金额"});
for (LoanSplitModel item : pageView.getRecords()) {
StringBuffer sb = new StringBuffer();
sb = sb.append(count++).append(",")//序号
.append(item.getContractCode() != null ? item.getContractCode() : "").append(",")//合同编号
.append(item.getCustomerName() != null ? item.getCustomerName() : "").append(",")//客户姓名
.append(item.getContractMoney() != null ? df.format(item.getContractMoney()) : "").append(",");//合同金额
list.add(sb.toString().split(","));
}
HSSFWorkbook workbook = ExcelUtil.addHSSFSheet(list);
try {
OutputStream os = ExcelUtil.getRespone("服务费统计表.xls", response);
workbook.write(os);
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
logger.error("-----------服务费统计列表导出excel异常", e);
}
}
调用的ExcelUtil类如下:
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.regex.Pattern;
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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ExcelUtil {
public static HSSFWorkbook addHSSFSheet(List<String[]> list) {
HSSFWorkbook workbook = new HSSFWorkbook();
// 产生工作表对象
HSSFSheet sheet = workbook.createSheet();
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
HSSFCellStyle numCellStyle = workbook.createCellStyle();
numCellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
numCellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
HSSFRow row = sheet.createRow((int) 0);// 创建一行
HSSFCell cell = row.createCell((int) 0);// 创建一列
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow((int) (i));// 创建一行
String[] files = list.get(i);
for (int k = 0; k < files.length; k++) {
sheet.setColumnWidth( k, 5900);// 设置列宽
cell = row.createCell((int) k);// 创建一列
cell.setCellStyle(cellStyle);
Pattern pNum=Pattern.compile("^(([1-9]\\d{0,9})|0)(\\.\\d{2})+$");
if(files[k] == null || !pNum.matcher(files[k]).matches()){
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(files[k]!=null?files[k]:"");
}else{
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellStyle(numCellStyle);
cell.setCellValue(Double.parseDouble(files[k]));
}
}
}
return workbook;
}
public static OutputStream getRespone(String filename,
HttpServletResponse response) {
OutputStream os = null;
try {
filename = new String(filename.getBytes("GBK"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
}
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName="
+ filename);
try {
os = response.getOutputStream();
} catch (IOException e) {
}
return os;
}
}