doum
2026-01-29 8d6a17ecf85faed505a5f8a95210a6b78bba2a64
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
@@ -10,10 +10,7 @@
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.*;
@@ -147,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("文档格式不正确!");
        }
@@ -162,10 +160,27 @@
        this.sheet = this.wb.getSheetAt(sheetIndex);
        this.headerNum = headerNum;
        this.changeType = cellType;
        this.pictureList = ExcelPictureUtil.getExcelPictures(in);
        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;
    }
    /**
@@ -357,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;