解析Excel文件数据,切分成多张excel并上传minio

后台代码:

1.首页解析excel数据为实体类,

java 复制代码
		List<DataCMMInfoExcel> list = new ArrayList<>();
        try {
            DefaultExcelListener readListener = new DefaultExcelListener(false);
            EasyExcel.read(file.getInputStream(), DataCMMInfoExcel.class, readListener).sheet().headRowNumber(14).doRead();
            list = readListener.getExcelResult().getList();
        } catch (IOException e) {
            e.printStackTrace();
            throw new ServiceException("读取excel文件出现异常");
        }

2.使用方法计算要切分成的excel数量

java 复制代码
//统计excel个数
        int productNo = getCountNum(list);

3.循坏遍历解析数据

java 复制代码
		//原文件名称
        String originalFileName = file.getOriginalFilename();

        //数据解析-遍历产品
        for (int i = 0; i < productNo; i++) {
            String oldFileName = StringUtils.substring(originalFileName, 0, originalFileName.lastIndexOf("."));
            String suffix = StringUtils.substring(originalFileName, originalFileName.lastIndexOf("."), originalFileName.length());
            //当前产品的文件名
            String fileName = oldFileName + "_" + (i+1) + suffix;
            String fileFullPath =  fileName;
            // 生成excel文件
            OutputStream outputSteam = null;
            try{
                File newFile = new File(fileFullPath);
                if (!newFile .getParentFile().exists()) {
                    newFile .getParentFile().mkdirs();
                }
                if(!newFile .exists()) {
                    newFile .createNewFile();
                }
                outputSteam = new FileOutputStream(newFile);
                //报表
                String[] fields = {"检测项", "标准值", "测量值"};
                SXSSFWorkbook wb = exportExcel(list,fields,i+1);
                wb.write(outputSteam);
                outputSteam.flush();
                outputSteam.close();

                //上传excel到minio
                OssClient ossClient = OssFactory.instance();
                UploadResult uploadResult;
                try {
                    uploadResult = ossClient.uploadSuffix(FileUtil.readBytes(newFile), FileUtil.getSuffix(fileName), FileUtil.getType(newFile));
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new ServiceException("上传minio出错");
                }
                
                //删除文件
                if (newFile.exists() && newFile.isFile()) {
                    if (newFile.delete()) {
                        log.info("删除excel文件名称:{}", fileName);
                    }
                }

            }catch (Exception e){
                throw new ServiceException("生成表格出现异常!");
            }
        }

4.生成excel表格方法

java 复制代码
private SXSSFWorkbook exportExcel(List<DataInfoExcel> excelList, String[] fields, int productNo) {
        SXSSFWorkbook wb = new SXSSFWorkbook();
        Sheet sheet = wb.createSheet("Data");

        // 生成一个样式
        CellStyle style = wb.createCellStyle();
        //设置边框居中
        style.setAlignment(HorizontalAlignment.CENTER);
        // 设置字体
        Font font = wb.createFont();
        font.setFontName("仿宋_GB2312");
        font.setColor(IndexedColors.OLIVE_GREEN.index);
        // 把字体应用到当前的样式
        style.setFont(font);

        //生成第一行
        Row row = sheet.createRow(0);
        for (int k = 0; k < fields.length; k++) {
            Cell cell1 = row.createCell(k);
            cell1.setCellValue(fields[k]);
            cell1.setCellStyle(style);
            sheet.setColumnWidth(k, fields[k].getBytes().length * 2 * 256);
        }

        //数据列表展示
        for (int i = 0; i < excelList.size(); i++) {
            DataInfoExcel infoExcel = excelList.get(i);
            //index表示起始写入位置
            row = sheet.createRow(1 + i);
            //检测项
            row.createCell(0).setCellValue(infoExcel.getName());
            //标准值
            row.createCell(1).setCellValue(infoExcel.getStand());
            //测量值
            if(productNo == 1){
                row.createCell(2).setCellValue(infoExcel.getProduct1());
            }else if(productNo == 2){
                row.createCell(2).setCellValue(infoExcel.getProduct2());
            }else if(productNo == 3){
                row.createCell(2).setCellValue(infoExcel.getProduct3());
            }
        }
        return wb;
    }
相关推荐
June bug2 分钟前
【Python基础】变量、运算与内存管理全解析
开发语言·python·职场和发展·测试
醇醛酸醚酮酯2 分钟前
Qt项目锻炼——TODO(五)
开发语言·qt
学习3人组2 分钟前
JVM GC长暂停问题排查
java
R_AirMan14 分钟前
深入浅出Redis:一文掌握Redis底层数据结构与实现原理
java·数据结构·数据库·redis
蹦蹦跳跳真可爱58922 分钟前
Python----OpenCV(几何变换--图像平移、图像旋转、放射变换、图像缩放、透视变换)
开发语言·人工智能·python·opencv·计算机视觉
骁的小小站26 分钟前
HDLBits刷题笔记和一些拓展知识(十一)
开发语言·经验分享·笔记·其他·fpga开发
Jtti28 分钟前
如何准确查看服务器网络的利用率?
开发语言·php
人生在勤,不索何获-白大侠33 分钟前
day17——Java集合进阶(Collections、Map)
java·开发语言
程序员小羊!1 小时前
Java教程:JavaWeb ---MySQL高级
java·开发语言·mysql
m0_723140231 小时前
Python训练营-Day49
开发语言·python