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 +++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/hx/util/FileUtils.java |   37 ++++++++++++++++++
 2 files changed, 120 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
diff --git a/src/main/java/com/hx/util/FileUtils.java b/src/main/java/com/hx/util/FileUtils.java
index 6911a87..7da1769 100644
--- a/src/main/java/com/hx/util/FileUtils.java
+++ b/src/main/java/com/hx/util/FileUtils.java
@@ -7,6 +7,7 @@
 
 import java.io.*;
 import java.net.FileNameMap;
+import java.net.URL;
 import java.net.URLConnection;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -625,5 +626,41 @@
         return type;
     }
 
+    public static File httpUrlFile(String netUrl) throws IOException {
+        File file = File.createTempFile("temp123", ".xls");
+        InputStream inStream = null;
+        FileOutputStream os = null;
+
+        try {
+            file = File.createTempFile("net_url", ".jpg");
+            URL urlfile = new URL(netUrl);
+            inStream = urlfile.openStream();
+            os = new FileOutputStream(file);
+
+            byte[] buffer = new byte[8192];
+
+            int bytesRead;
+            while((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {
+                os.write(buffer, 0, bytesRead);
+            }
+        } catch (Exception var15) {
+            var15.printStackTrace();
+        } finally {
+            try {
+                if (null != os) {
+                    os.close();
+                }
+
+                if (null != inStream) {
+                    inStream.close();
+                }
+            } catch (Exception var14) {
+                var14.printStackTrace();
+            }
+
+        }
+
+        return file;
+    }
 
 }

--
Gitblit v1.8.0