From 6b6bf55bd752a477643c798d9e9bba36bef277ef Mon Sep 17 00:00:00 2001
From: wangrenhuang <wangren_huang@163.com>
Date: 星期三, 31 八月 2022 19:30:03 +0800
Subject: [PATCH] 导出文件工具类优化

---
 src/main/java/com/hx/util/ExcelUtil.java |   83 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/hx/util/ExcelUtil.java b/src/main/java/com/hx/util/ExcelUtil.java
index d0b4f6d..5cbea70 100644
--- a/src/main/java/com/hx/util/ExcelUtil.java
+++ b/src/main/java/com/hx/util/ExcelUtil.java
@@ -15,6 +15,8 @@
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
 import java.io.*;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -719,4 +721,85 @@
 	}
 
 
+
+
+
+	public static File createExcelByImg(String[] headList, String[] fieldList, List<Map<String, Object>> dataList, Integer height, Integer width) throws Exception {
+		File file = File.createTempFile("temp", ".xls");
+		FileOutputStream fileOut = null;
+		BufferedImage bufferImg = null;
+
+		try {
+			ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
+			if (height == null) {
+				height = 450;
+			}
+
+			if (width == null) {
+				width = 1000;
+			}
+
+			HSSFWorkbook workbook = new HSSFWorkbook();
+			HSSFCellStyle boderStyle = workbook.createCellStyle();
+			boderStyle.setVerticalAlignment((short)1);
+			boderStyle.setAlignment((short)2);
+			HSSFSheet sheet = workbook.createSheet();
+			HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
+			HSSFRow row = sheet.createRow(0);
+
+			HSSFCell anchor;
+			for(int i = 0; i < headList.length; ++i) {
+				row.setHeight(height.shortValue());
+				sheet.setColumnWidth(i, width);
+				anchor = row.createCell(i);
+				anchor.setCellType(1);
+				anchor.setCellValue(headList[i]);
+				anchor.setCellStyle(boderStyle);
+			}
+
+			HSSFRow row_value = null;
+			anchor = null;
+			HSSFCell cell = null;
+			if (dataList != null) {
+				for(int n = 0; n < dataList.size(); ++n) {
+					row_value = sheet.createRow(n + 1);
+					row_value.setHeight(height.shortValue());
+					Map<String, Object> dataMap = (Map)dataList.get(n);
+
+					for(int i = 0; i < fieldList.length; ++i) {
+						sheet.setColumnWidth(i, width);
+						cell = row_value.createCell(i);
+						cell.setCellType(1);
+						Object value = dataMap.get(fieldList[i]);
+						if (value != null && "class java.io.File".equals(value.getClass().toString())) {
+							File file2 = (File)value;
+							if (file2 == null) {
+								cell.setCellValue("");
+							} else {
+								bufferImg = ImageIO.read(file2);
+								ImageIO.write(bufferImg, "jpg", byteArrayOut);
+								HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 1023, 255, (short)i, n + 1, (short)i, n + 1);
+								anchor1.setAnchorType(0);
+								patriarch.createPicture(anchor1, workbook.addPicture(byteArrayOut.toByteArray(), 5));
+							}
+						} else {
+							cell.setCellValue(objToString(dataMap.get(fieldList[i])));
+							cell.setCellStyle(boderStyle);
+						}
+					}
+				}
+			}
+
+			FileOutputStream fOut = new FileOutputStream(file);
+			workbook.write(fOut);
+			fOut.flush();
+			fOut.close();
+		} catch (Exception var25) {
+			var25.printStackTrace();
+		} finally {
+			file.deleteOnExit();
+		}
+
+		return file;
+	}
 }
\ No newline at end of file

--
Gitblit v1.8.0