From bb996e12e22c9b8254325406451d8e1a99699d35 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 29 一月 2026 14:39:58 +0800
Subject: [PATCH] 提交忽略文件
---
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java | 35 ++++++++++++++++++++++++++++-------
1 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
index f8f067c..56eb9a9 100644
--- a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
+++ b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
@@ -4,15 +4,13 @@
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFPictureData;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
@@ -42,7 +40,7 @@
* 鏍囬琛屽彿
*/
private CellType changeType;
-
+ private Map<String, XSSFPictureData> pictureList;
/**
* 鏋勯�犲嚱鏁�
* @param--path 瀵煎叆鏂囦欢锛岃鍙栫涓�涓伐浣滆〃
@@ -146,12 +144,13 @@
}
public ExcelImporter(String fileName, InputStream in, int headerNum, int sheetIndex,CellType cellType)
throws InvalidFormatException, IOException {
+ ByteArrayOutputStream buffer = toByteArray(in);
if (StringUtils.isBlank(fileName)){
throw new RuntimeException("瀵煎叆鏂囨。涓虹┖!");
}else if(fileName.toLowerCase().endsWith("xls")){
- this.wb = new HSSFWorkbook(in);
+ this.wb = new HSSFWorkbook(new ByteArrayInputStream(buffer.toByteArray()));
}else if(fileName.toLowerCase().endsWith("xlsx")){
- this.wb = new XSSFWorkbook(in);
+ this.wb = new XSSFWorkbook(new ByteArrayInputStream(buffer.toByteArray()));
}else{
throw new RuntimeException("鏂囨。鏍煎紡涓嶆纭�!");
}
@@ -161,9 +160,27 @@
this.sheet = this.wb.getSheetAt(sheetIndex);
this.headerNum = headerNum;
this.changeType = cellType;
+ this.pictureList = ExcelPictureUtil.getExcelPictures(new ByteArrayInputStream(buffer.toByteArray()));
log.debug("Initialize success.");
}
+ public static ByteArrayOutputStream toByteArray(InputStream inputStream) {
+ try {
+ // 缂撳瓨鏂囦欢娴�
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ byte[] data = new byte[1024];
+ int nRead;
+ while ((nRead = inputStream.read(data, 0, data.length))!= -1) {
+ buffer.write(data, 0, nRead);
+ }
+ buffer.flush();
+
+ return buffer;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
/**
@@ -227,6 +244,9 @@
return val;
}
return val;
+ }
+ public Map<String,XSSFPictureData> getExcelPictures(){
+ return this.pictureList;
}
/**
@@ -352,6 +372,7 @@
"fieldtype."+valType.getSimpleName()+"Type")).getMethod("getValue", String.class).invoke(null, val.toString());
}
}
+
} catch (Exception ex) {
log.info("Get cell value ["+i+","+column+"] error: " + ex.toString());
val = null;
--
Gitblit v1.9.3