From 2b430bf3f4d6e84bd7ad351a6bcdd1d3a08c4630 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 17 二月 2024 10:38:22 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java | 93 +++++++++++++++++++++++++++++++++------------- 1 files changed, 67 insertions(+), 26 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java index ad6384a..c74ac0a 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java @@ -1,48 +1,89 @@ package com.zy.asrs.wcs.utils; +import com.zy.asrs.framework.common.Cools; +import io.swagger.annotations.ApiModelProperty; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; /** * Created by vincent on 2/17/2024 */ public class ExcelUtil { - public static Workbook create() { - // 鍒涘缓 Workbook 鍜� Sheet + public static void build(Workbook workbook, HttpServletResponse response) { + response.reset(); + Utils.cors(response); + response.setContentType("application/octet-stream; charset=utf-8"); + try { + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("export", "UTF-8")); + workbook.write(response.getOutputStream()); + } catch (IOException ignore) {} + } + + public static <T> Workbook create(List<T> list, Class<T> clz) { HSSFWorkbook workbook = new HSSFWorkbook(); - Sheet sheet = workbook.createSheet("杩愮淮鎶ヨ〃"); + Sheet sheet = workbook.createSheet(clz.getSimpleName()); - // 鍒涘缓琛ㄥご Row header = sheet.createRow(0); - header.createCell(0).setCellValue("濮撳悕"); - header.createCell(1).setCellValue("骞撮緞"); - header.createCell(2).setCellValue("鎬у埆"); - header.createCell(3).setCellValue("鑱屼綅"); + Field[] fields = Cools.getAllFields(clz); + int headerIdx = 0; + for (Field field : fields) { + if (Modifier.isFinal(field.getModifiers()) + || Modifier.isStatic(field.getModifiers()) + || Modifier.isTransient(field.getModifiers())) { + continue; + } + String memo = "鏈煡"; + if (field.isAnnotationPresent(ApiModelProperty.class)) { + memo = field.getAnnotation(ApiModelProperty.class).value(); + } + header.createCell(headerIdx).setCellValue(memo); + headerIdx++; + } - // 娣诲姞涓�浜涙暟鎹� - Row row1 = sheet.createRow(1); - row1.createCell(0).setCellValue("寮犱笁"); - row1.createCell(1).setCellValue(28); - row1.createCell(2).setCellValue("鐢�"); - row1.createCell(3).setCellValue("杩愮淮宸ョ▼甯�"); + int rowIndex = 1; + for (T t : list) { + Row row = sheet.createRow(rowIndex++); - Row row2 = sheet.createRow(2); - row2.createCell(0).setCellValue("鏉庡洓"); - row2.createCell(1).setCellValue(32); - row2.createCell(2).setCellValue("濂�"); - row2.createCell(3).setCellValue("椤圭洰缁忕悊"); + int cellIndex = 0; + for (Field field : fields) { + if (Modifier.isFinal(field.getModifiers()) + || Modifier.isStatic(field.getModifiers()) + || Modifier.isTransient(field.getModifiers())) { + continue; + } - Row row3 = sheet.createRow(3); - row3.createCell(0).setCellValue("鐜嬩簲"); - row3.createCell(1).setCellValue(25); - row3.createCell(2).setCellValue("鐢�"); - row3.createCell(3).setCellValue("寮�鍙戝伐绋嬪笀"); + field.setAccessible(true); // 姝よ寰堥噸瑕侊紝鐗瑰埆鏄瓧娈典负private鏃� + Object value = null; + try { + value = field.get(t); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + if (value != null) { + if (value instanceof Date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + row.createCell(cellIndex).setCellValue(sdf.format((Date) value)); + } else { + row.createCell(cellIndex).setCellValue(value.toString()); + } + } + cellIndex++; + } + } - // 鎵ц鍗曞厓鏍艰嚜鍔ㄥ垪瀹� - for (int i = 0; i <= 3; i++) { + for (int i = 0; i <= fields.length; i++) { sheet.autoSizeColumn(i); } -- Gitblit v1.9.1