瀏覽代碼

Excel导出工具类错误处理

gaodm 6 年之前
父節點
當前提交
bbc04bf421
共有 1 個文件被更改,包括 106 次插入100 次删除
  1. 106 100
      common/src/main/java/com/diagbot/util/ExportBeanExcelUtil.java

+ 106 - 100
common/src/main/java/com/diagbot/util/ExportBeanExcelUtil.java

@@ -151,104 +151,110 @@ public class ExportBeanExcelUtil<T> {
 
         // return resultMode;
     }
-    
-	public  void exportExcelNew(String title, List<String> headersName, List<String> headersId, List<T> dtoList,
-			HttpServletResponse response) {
-		/* (一)表头--标题栏 */
-		Map<Integer, String> headersNameMap = new HashMap<>();
-		int key = 0;
-		for (int i = 0; i < headersName.size(); i++) {
-			if (!headersName.get(i).equals(null)) {
-				headersNameMap.put(key, headersName.get(i));
-				key++;
-			}
-		}
-		/* (二)字段 */
-		Map<Integer, String> titleFieldMap = new HashMap<>();
-		int value = 0;
-		for (int i = 0; i < headersId.size(); i++) {
-			if (!headersId.get(i).equals(null)) {
-				titleFieldMap.put(value, headersId.get(i));
-				value++;
-			}
-		}
-		/* (三)声明一个工作薄:包括构建工作簿、表格、样式 */
-		HSSFWorkbook wb = new HSSFWorkbook();
-		HSSFSheet sheet = wb.createSheet(title);
-		sheet.setDefaultColumnWidth((short) 15);
-		// 生成一个样式
-		HSSFCellStyle style = wb.createCellStyle();
-		HSSFRow row = sheet.createRow(0);
-		style.setAlignment(HorizontalAlignment.CENTER);
-		HSSFCell cell;
-		Collection c = headersNameMap.values();// 拿到表格所有标题的value的集合
-		Iterator<String> it = c.iterator();// 表格标题的迭代器
-		/* (四)导出数据:包括导出标题栏以及内容栏 */
-		// 根据选择的字段生成表头
-		short size = 0;
-		while (it.hasNext()) {
-			cell = row.createCell(size);
-			cell.setCellValue(it.next().toString());
-			cell.setCellStyle(style);
-			size++;
-		}
-		// 表格标题一行的字段的集合
-		Collection zdC = titleFieldMap.values();
-		Iterator<T> labIt = dtoList.iterator();// 总记录的迭代器
-		int zdRow = 0;// 列序号
-		while (labIt.hasNext()) {// 记录的迭代器,遍历总记录
-			int zdCell = 0;
-			zdRow++;
-			row = sheet.createRow(zdRow);
-			T l = (T) labIt.next();
-			// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
-			Field[] fields = l.getClass().getDeclaredFields();// 获得JavaBean全部属性
-			for (short i = 0; i < fields.length; i++) {// 遍历属性,比对
-				Field field = fields[i];
-				String fieldName = field.getName();// 属性名
-				Iterator<String> zdIt = zdC.iterator();// 一条字段的集合的迭代器
-				while (zdIt.hasNext()) {// 遍历要导出的字段集合
-					if (zdIt.next().equals(fieldName)) {// 比对JavaBean的属性名,一致就写入,不一致就丢弃
-						String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);// 拿到属性的get方法
-						Class tCls = l.getClass();// 拿到JavaBean对象
-						try {
-							Method getMethod = tCls.getMethod(getMethodName, new Class[] {});// 通过JavaBean对象拿到该属性的get方法,从而进行操控
-							Object val = getMethod.invoke(l, new Object[] {});// 操控该对象属性的get方法,从而拿到属性值
-							String textVal = null;
-							if (val != null) {
-								textVal = String.valueOf(val);// 转化成String
-							} else {
-								textVal = null;
-							}
-							row.createCell((short) zdCell).setCellValue(textVal);// 写进excel对象
-							zdCell++;
-						} catch (SecurityException e) {
-							e.printStackTrace();
-						} catch (IllegalArgumentException e) {
-							e.printStackTrace();
-						} catch (NoSuchMethodException e) {
-							e.printStackTrace();
-						} catch (IllegalAccessException e) {
-							e.printStackTrace();
-						} catch (InvocationTargetException e) {
-							e.printStackTrace();
-						}
-					}
-				}
-			}
-		}
-		try {
-             String fileNameNew = String.valueOf(System.currentTimeMillis()).substring(4, 13) + ".xls";
-                    String headStr = "attachment; filename=\"" + fileNameNew + "\"";
-                    response.reset();
-                    response.setContentType("APPLICATION/OCTET-STREAM");
-                    response.setHeader("Content-Disposition", headStr);
-                    OutputStream out = response.getOutputStream();
-                    wb.write(out);
-                } catch (IOException e) {
-                    // TODO Auto-generated catch block
-                 e.printStackTrace();
-               } 
-		 
-	}
+
+    public void exportExcelNew(String title, List<String> headersName, List<String> headersId, List<T> dtoList,
+                               HttpServletResponse response) {
+        /* (一)表头--标题栏 */
+        Map<Integer, String> headersNameMap = new HashMap<>();
+        int key = 0;
+        for (int i = 0; i < headersName.size(); i++) {
+            if (!headersName.get(i).equals(null)) {
+                headersNameMap.put(key, headersName.get(i));
+                key++;
+            }
+        }
+        /* (二)字段 */
+        Map<Integer, String> titleFieldMap = new HashMap<>();
+        int value = 0;
+        for (int i = 0; i < headersId.size(); i++) {
+            if (!headersId.get(i).equals(null)) {
+                titleFieldMap.put(value, headersId.get(i));
+                value++;
+            }
+        }
+        /* (三)声明一个工作薄:包括构建工作簿、表格、样式 */
+        HSSFWorkbook wb = new HSSFWorkbook();
+        HSSFSheet sheet = wb.createSheet(title);
+        sheet.setDefaultColumnWidth((short) 15);
+        // 生成一个样式
+        HSSFCellStyle style = wb.createCellStyle();
+        HSSFRow row = sheet.createRow(0);
+        style.setAlignment(HorizontalAlignment.CENTER);
+        HSSFCell cell;
+        Collection c = headersNameMap.values();// 拿到表格所有标题的value的集合
+        Iterator<String> it = c.iterator();// 表格标题的迭代器
+        /* (四)导出数据:包括导出标题栏以及内容栏 */
+        // 根据选择的字段生成表头
+        short size = 0;
+        while (it.hasNext()) {
+            cell = row.createCell(size);
+            cell.setCellValue(it.next().toString());
+            cell.setCellStyle(style);
+            size++;
+        }
+        // 表格标题一行的字段的集合
+        Collection zdC = titleFieldMap.values();
+        Iterator<T> labIt = dtoList.iterator();// 总记录的迭代器
+        int zdRow = 0;// 列序号
+        while (labIt.hasNext()) {// 记录的迭代器,遍历总记录
+            int zdCell = 0;
+            zdRow++;
+            row = sheet.createRow(zdRow);
+            T l = (T) labIt.next();
+            // 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
+            Field[] fields = l.getClass().getDeclaredFields();// 获得JavaBean全部属性
+            for (short i = 0; i < fields.length; i++) {// 遍历属性,比对
+                Field field = fields[i];
+                String fieldName = field.getName();// 属性名
+                Iterator<String> zdIt = zdC.iterator();// 一条字段的集合的迭代器
+                while (zdIt.hasNext()) {// 遍历要导出的字段集合
+                    if (zdIt.next().equals(fieldName)) {// 比对JavaBean的属性名,一致就写入,不一致就丢弃
+                        String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);// 拿到属性的get方法
+                        Class tCls = l.getClass();// 拿到JavaBean对象
+                        try {
+                            Method getMethod = tCls.getMethod(getMethodName, new Class[] {});// 通过JavaBean对象拿到该属性的get方法,从而进行操控
+                            Object val = getMethod.invoke(l, new Object[] {});// 操控该对象属性的get方法,从而拿到属性值
+                            String textVal = null;
+                            if (val != null) {
+                                textVal = String.valueOf(val);// 转化成String
+                            } else {
+                                textVal = null;
+                            }
+                            row.createCell((short) zdCell).setCellValue(textVal);// 写进excel对象
+                            zdCell++;
+                        } catch (SecurityException e) {
+                            e.printStackTrace();
+                            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导出失败");
+                        } catch (IllegalArgumentException e) {
+                            e.printStackTrace();
+                            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导出失败");
+                        } catch (NoSuchMethodException e) {
+                            e.printStackTrace();
+                            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导出失败");
+                        } catch (IllegalAccessException e) {
+                            e.printStackTrace();
+                            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导出失败");
+                        } catch (InvocationTargetException e) {
+                            e.printStackTrace();
+                            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导出失败");
+                        }
+                    }
+                }
+            }
+        }
+        try {
+            String fileNameNew = String.valueOf(System.currentTimeMillis()).substring(4, 13) + ".xls";
+            String headStr = "attachment; filename=\"" + fileNameNew + "\"";
+            response.reset();
+            response.setContentType("APPLICATION/OCTET-STREAM");
+            response.setHeader("Content-Disposition", headStr);
+            OutputStream out = response.getOutputStream();
+            wb.write(out);
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导出失败");
+        }
+
+    }
 }