解决POIExcelWriter导出excel表乱码问题
public String cbxxycHxList() {
String retUrl = request.getHeader("Referer");
AbstractUser user = loginedUser().getUser();
if (!(user instanceof UserInfo)) {
throw new DataException("您不是组织内用户");
}
DepartmentQuery departmentQuery = departmentService.createQuery();
departmentQuery.subs(IaolnContants.ORG_LIAONING,2);
departmentQuery.type(DepartmentType.BusinessUnit);
List<Department> departmentList = departmentQuery.list();
List<Catalog> xzleixing = catalogService .listSubsForQuery(IaolnContants.CBXZ_TYPE);
CatalogQuery catalogQuery = catalogService.createQuery();
catalogQuery.idLayerLike(IaolnContants.AREA_TYPE);
catalogQuery.status(0);
catalogQuery.depthLessThan(3);
catalogQuery.depthGreateThan(1);
catalogQuery.orderByOrderNo();
List<Catalog> areas = catalogQuery.list();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String name = request.getParameter("username");
String idCard = request.getParameter("idCard");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
String[] dqmc = request.getParameterValues("dqmc");
String[] xzlx = request.getParameterValues("xzleixing");
CbxxQuery query = cbxxService.createQuery();
if (name != null && !"".equals(name)) {
query.bbxrName(name);
}
if (idCard != null && !"".equals(idCard)) {
query.idCard(idCard);
}
if (startTime != null && !"".equals(startTime)) {
try {
query.chengbaoTime(sdf.parse(startTime));
} catch (ParseException e) {
e.printStackTrace();
}
}
if (endTime != null && !"".equals(endTime)) {
try {
query.chengbaoendTime(sdf.parse(endTime));
} catch (ParseException e) {
e.printStackTrace();
}
}
if (dqmc != null && !"".equals(dqmc)) {
query.dqmcs(dqmc);
}
if (xzlx != null && !"".equals(xzlx)) {
query.xzlxs(xzlx);
}
if (insuranceId != null && !"".equals(insuranceId)) {
String[] insuranceIds = insuranceId.split(",");
query.companyIds(insuranceIds);
}
query.orderByCreateTime(Direction.DESC);
String order = getParameter("_order");
final Map<String, String[]> parameterMap = new HashMap<String, String[]>();
parameterMap.putAll(request.getParameterMap());
if (StringUtils.isEmpty(order)) {
parameterMap.put("_order", new String[] { "orderByID" });
parameterMap.put("_orderparam", new String[] { "desc" });
}
query.orderByCreateTime(Direction.DESC);
PagedList<Cbxx> list = query.listRange(getOffset(), getLimit());
List<Cbxx> listAll = query.list();
String downLoad = request.getParameter("downLoadhxForm");
if (downLoad != null && downLoad.equals("hxForm")) {
POIExcelWriter writer = new POIExcelWriter(PoiExcelType.XLSX);
writer.addSheet("承保异常数据");
CellStyle titleCellStyle = writer.createCellStyle("string");
Font titleFont = writer.createFont();
titleFont.setFontHeightInPoints((short) 18);
titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
titleFont.setFontName("宋体");
titleCellStyle.setFont(titleFont);
titleCellStyle.setAlignment(CellStyle.ALIGN_CENTER);
writer.merge(0, "A", 0, "E");
writer.setData(1, "A", "承保异常信息表");
writer.clearStyles();
CellStyle titleCellStyle0 = writer.createCellStyle("string");
Font titleFont0 = writer.createFont();
titleFont0.setFontHeightInPoints((short) 10);
titleFont0.setFontName("宋体");
titleCellStyle0.setFont(titleFont0);
titleCellStyle0.setAlignment(CellStyle.ALIGN_RIGHT);
writer.merge(1, "A", 1, "E");
writer.setData(2, "A", "单位:元");
writer.clearStyles();
CellStyle titleCellStyle1 = writer.createCellStyle("string");
Font titleFont1 = writer.createFont();
titleFont1.setFontHeightInPoints((short) 11);
titleFont1.setBoldweight(Font.BOLDWEIGHT_BOLD);
titleFont1.setFontName("宋体");
titleCellStyle1.setFont(titleFont1);
titleCellStyle1.setAlignment(CellStyle.ALIGN_CENTER);
titleCellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
titleCellStyle1.setBorderTop(CellStyle.BORDER_THIN);
titleCellStyle1.setBorderBottom(CellStyle.BORDER_THIN);
titleCellStyle1.setBorderLeft(CellStyle.BORDER_THIN);
titleCellStyle1.setBorderRight(CellStyle.BORDER_THIN);
writer.setColumnWidth("A", 5000);
writer.setColumnWidth("B", 5000);
writer.setColumnWidth("C", 5000);
writer.setColumnWidth("D", 5000);
writer.setColumnWidth("E", 5000);
writer.setData(3, "A", "客户姓名");
writer.setData(3, "B", "身份证号");
writer.setData(3, "C", "公司");
writer.setData(3, "D", "险种类型");
writer.setData(3, "E", "承保时间");
writer.clearStyles();
if(StringUtils.indexOf(retUrl, "cbxxycHx.action") > -1){
}else if(StringUtils.indexOf(retUrl, "cbxxycHxList.action") > -1){
if (listAll != null && !listAll.isEmpty()) {
for (int i = 0; i < listAll.size(); i++) {
writer.setData(i + 4, "A", listAll.get(i).getBbxrName());
writer.setData(i + 4, "B", listAll.get(i).getIdCard());
writer.setData(i + 4, "C", listAll.get(i).getCompanyName());
writer.setData(i + 4, "D", listAll.get(i).getXzLeixing());
writer.setData(i + 4, "E", listAll.get(i).getChengbaoTime(), "yyyy-MM-DD");
}
}
}
try {
response.setContentType("applicationnd.ms-excel");
String fileName = "承保异常数据.xlsx";
String browserName = BrowserUtils.getBrowserName(request);
if (StringUtils.indexOf(browserName, "ie") > -1
|| StringUtils.indexOf(browserName, "edge") > -1
|| StringUtils.indexOf(browserName, "webkit") > -1) {
fileName = java.net.URLEncoder.encode(fileName, "UTF8");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}
response.setContentType("applicationnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename="
+ fileName);
OutputStream os = response.getOutputStream();
writer.writeTo(os);
os.close();
} catch (Exception e) {
}
return null;
}
request.setAttribute("list", list);
request.setAttribute("areas", areas);
request.setAttribute("menuId", "cbproblemdata_cbxxycHx");
request.setAttribute("xzleixing", xzleixing);
request.setAttribute("departmentList", departmentList);
return "yclistHx";
}