maven
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
public class ExcelExportUtil<T> { public boolean exportCustomExcel(String fileName, List<T> list, Map<String,String> titleMap, HttpServletResponse response) throws Exception { fileName = fileName + DateUtils.formatDateYMD(new Date()); response.setContentType("aplication/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "inline; filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".xls"); NumberFormat nf = new NumberFormat("#0");// Set digital format WritableCellFormat wcfN = new WritableCellFormat (nf) {the try // Create an Excel workbook WritableWorkbook WWB = Workbook.createWorkbook (Response .getOutputStream ()); // add the first sheet and the name of the first set of Sheet WritableSheet sheet = wwb.createSheet (fileName, 0 ); = null label the label; Boolean title = to true; int = rowNum. 1; Field, Fields [] = List.get (0) .getClass () getDeclaredFields ();. List <Field,> = new new validFieldList the ArrayList <Field,> (); for (int I = 0; I <fields.length; I ++) { Field, = Fields Field [I]; String field.getName the fieldName = (); IF (fieldName.equals (. 1)) { Continue; } if (!titleMap.containsKey(fieldName)) { continue; } validFieldList.add(field); } for (T t : list) { // 填充数据 for (int i = 0; i < validFieldList.size(); i++) { Field field = validFieldList.get(i); String fieldName = field.getName(); Object type = field.getType(); // 添加标题 if (title) { fieldName =titleMap.get(fieldName); label = new Label(i, 0, fieldName); sheet.addCell(label); } field.setAccessible(true); Object value = field.get(t); if (value != null) { if (type.toString().equals("class java.util.Date")) { try { label = new Label(i, rowNum, DateUtils.formatDateYMDHMS((Date) value)); } catch (Exception e) { value = ""; } }else if(value instanceof Integer || value instanceof Long || value instanceof Double || value instanceof Short){ label = new Label(i, rowNum, value.toString(), wcfN); }else if(fieldName.endsWith("price")||fieldName.endsWith("Price")){ label = new Label(i, rowNum, MathUtils.div(value + "","100")); }else { label = new Label(i, rowNum, value + ""); } sheet.addCell(label); } } title = false; rowNum++; } wwb.write(); wwb.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public boolean exportRedExcel(String fileName, List<T> list, Map<String,String> titleMap, HttpServletResponse response) throws Exception { fileName = fileName + DateUtils.formatDateYMD(new Date()); response.setContentType("aplication/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "inline; filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".xls"); number formattingNumberFormat nf = new NumberFormat ( "# WritableFont wf = new WritableFont (WritableFont .TAHOMA); wf.setColour (Colour.RED); WritableCellFormat wcfN = new new WritableCellFormat (NF); WritableCellFormat WCfr new new WritableCellFormat = (WF); the try { // create Excel workbook WritableWorkbook WWB = Workbook.createWorkbook (Response .getOutputStream ( )); // add the first sheet and the name of the first set of sheet WritableSheet sheet = wwb.createSheet (fileName, 0); the label label = null; boolean title = true; int rowNum = 1; Field fields[] = list.get(0).getClass().getDeclaredFields(); List<Field> validFieldList = new ArrayList<Field>(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; String fieldName = field.getName(); if (fieldName.equals(1)) { continue; } if (!titleMap.containsKey(fieldName)) { continue; } validFieldList.add(field); } for (T t : list) { // 填充数据 for (int i = 0; i < validFieldList.size(); i++) { Field field = validFieldList.get(i); String fieldName = field.getName(); Object type = field.getType(); // 添加标题 if (title) { fieldName =titleMap.get(fieldName); label = new Label(i, 0, fieldName); sheet.addCell(label); } field.setAccessible(true); Object value = field.get(t); if (value != null) { if (type.toString().equals("class java.util.Date")) { try { label = new Label(i, rowNum, DateUtils.formatDateYMDHMS((Date) value)); } catch (Exception e) { value = ""; } }else if(value instanceof Integer || value instanceof Long || value instanceof Double || value instanceof Short){ label = new Label(i, rowNum, value.toString(), wcfN); }else if(fieldName.endsWith("price")||fieldName.endsWith("Price")){ label = new Label(i, rowNum, MathUtils.div(value + "","100")); }else { if(value.toString().startsWith("red")){ String substring = value.toString().substring(3); label = new Label(i, rowNum, substring ,wcfR); }else{ label = new Label(i, rowNum, value + ""); } } sheet.addCell(label); } } title = false; rowNum++; } wwb.write(); wwb.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } }
Use
ExcelExportUtil<ExcelRiskDataDTO> excelUtil = new ExcelExportUtil<ExcelRiskDataDTO>(); Map<String, String> titleMap = new HashMap<String, String>(); titleMap.put("makeDate", "XX"); titleMap.put("channel", "XX"); titleMap.put("shop", "XX"); titleMap.put("qrcode", "XX"); titleMap.put("task1", "XXXX"); titleMap.put("task2", "XXX"); titleMap.put("task3", "XXXX"); titleMap.put("task4", "XXXXX"); titleMap.put("task5", "XXXX"); titleMap.put("task6", "XXXX"); titleMap.put("task7", "XXXX"); titleMap.put("task8", "XXXX"); titleMap.put("task9", "XXXX"); titleMap.put("task10", "XXXX"); titleMap.put("task11", "XXXX"); titleMap.put("task12", "XXXX"); titleMap.put("reason", "XXXX"); } String fileName = ""; if (tag == 1) { fileName = "预警"; } else { fileName = "淘汰"; } excelUtil.exportRedExcel(fileName, excelDTOList, titleMap, response);
public class ExcelRiskDataDTO implements Serializable {
private static final long serialVersionUID = -8754505839853771317L;
private String makeDate;
private String channel;
private String shop;
private String qrcode;
private String task1;
private String task2;
private String task3;
private String task4;
private String task5;
private String task6;
private String task7;
private String task8;
private String task9;
private String task10;
private String task11;
private String task12;
private String reason;
public String getMakeDate() {
return makeDate;
}
public void setMakeDate(String makeDate) {
this.makeDate = makeDate;
}
public String getChannel() {
return channel;
}
public void setChannel(String channel) {
this.channel = channel;
}
public String getShop() {
return shop;
}
public void setShop(String shop) {
this.shop = shop;
}
public String getQrcode() {
return qrcode;
}
public void setQrcode(String qrcode) {
this.qrcode = qrcode;
}
public String getTask1() {
return task1;
}
public void setTask1(String task1) {
this.task1 = task1;
}
public String getTask2() {
return task2;
}
public void setTask2(String task2) {
this.task2 = task2;
}
public String getTask3() {
return task3;
}
public void setTask3(String task3) {
this.task3 = task3;
}
public String getTask4() {
return task4;
}
public void setTask4(String task4) {
this.task4 = task4;
}
public String getTask5() {
return task5;
}
public void setTask5(String task5) {
this.task5 = task5;
}
public String getTask6() {
return task6;
}
public void setTask6(String task6) {
this.task6 = task6;
}
public String getTask7() {
return task7;
}
public void setTask7(String task7) {
this.task7 = task7;
}
public String getTask8() {
return task8;
}
public void setTask8(String task8) {
this.task8 = task8;
}
public String getTask9() {
return task9;
}
public void setTask9(String task9) {
this.task9 = task9;
}
public String getTask10() {
return task10;
}
public void setTask10(String task10) {
this.task10 = task10;
}
public String getTask11() {
return task11;
}
public void setTask11(String task11) {
this.task11 = task11;
}
public String getTask12() {
return task12;
}
public void setTask12(String task12) {
this.task12 = task12;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}