首页 > 其他分享 >EasyExcel读取Minio文件服务器Excel文件数据

EasyExcel读取Minio文件服务器Excel文件数据

时间:2023-06-16 14:35:34浏览次数:44  
标签:文件 MultipartFile read EasyExcel Excel fileName inputStream os

 

 

 工具类inputstream转为MultipartFile

 /**
     * inputStream转MultipartFile
     * @param inputStream
     * @param fileName
     * @return
     */
    public static FileItem createFileItem(InputStream inputStream, String fileName) {
        FileItemFactory factory = new DiskFileItemFactory(16, null);
        FileItem fileItem = factory.createItem("file", MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName);
        int read = 0;
        OutputStream os = null;
        byte[] buffer = new byte[10 * 1024 * 1024];
        try {
            os = fileItem.getOutputStream();
            while ((read = inputStream.read(buffer, 0, 4096)) != -1) {
                os.write(buffer, 0, read);
            }
            inputStream.close();
        } catch (IOException e) {
            log.error("os write exception", e);
            throw new IllegalArgumentException("文件流输出失败");
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    log.error("stream os close exception", e);
                }
            }
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    log.error("stream inputStream close exception", e);
                }
            }
        }
        return fileItem;
    }

    /**
     * inputStream转MultipartFile
     * @param inputStream
     * @param fileName
     * @return
     */
    public static MultipartFile getMultipartFile(InputStream inputStream, String fileName) {
        FileItem fileItem = createFileItem(inputStream, fileName);
        return new CommonsMultipartFile(fileItem);
    }

 

 

 

根据 filePath文件地址读取Minio文件服务器上的excel文件

public void importData(String filePath) throws Exception {
        //读取Excel文件中的数据,redListener网上搜索以下案例就行,用于EasyExcel转换实体对象
        StudentReadListener readListener = new StudentReadListener();
        String fileUrlPath = filePath.replace("/mrLi","");
        InputStream in = minioClient.getObject(
                GetObjectArgs.builder()
                        .bucket(minioConfig.getBucketName())
                        .object(fileUrlPath)
                        .build());
        //无法直接读取minio文件流,转为MultipartFile文件
//        MultipartFile file = FileUtils.getMultipartFile(in,DateUtils.getNowDate()+"temp.xlsx");
        EasyExcel.read(in, StudentExcelDTO.class, readListener).sheet().doRead();
//得到excel文件转换后的数据内容 List<StudentExcelDTO> excelDTOList = readListener.getStudentExcelDTOList();

 

标签:文件,MultipartFile,read,EasyExcel,Excel,fileName,inputStream,os
From: https://www.cnblogs.com/mangwusuozhi/p/17485430.html

相关文章

  • 用户+文件同步脚本
    cat /opt/inotify_rsync.sh#!/bin/bashexportRSYNC_PASSWORD=JxwKRl%!xxxxxx#实时监控61.212主机/sftp/的变化INOTIFY_CMD="/usr/local/bin/inotifywait-mrq-emodify,create,attrib,move,delete/sftp/"#RSYNC_CMD="rsync-azH--delete/sftp/back......
  • 二进制文件安装mysql5.7
    yum安装mysql5.7虽然方便,但是安装的路径和配置难以定制化,这边使用二进制安装,即使用官方提供的编译软件包来安装,不需要额外准备依赖的环境软件,安装也会变的更加轻量,且可以定制化。一、自定制规范Mysql本身没有明确的安装规范,但是日常工作中为了便于管理和定位问题,我们需要对Mysql......
  • Excel 进度图表制作
    Excel改变图标的形状最终效果过程有点杂乱,不再重新整理,基本照着下面的设就完事了。未完成的想用柱型,和已完成的相结合右击,更改表类型选择簇状柱形图、次标轴注意主、次坐标进度改为折线图调整右侧百分比轴数据表,显示表格数据折线显示数据点注意,系列虚......
  • Qt+QtWebApp开发笔记(六):http服务器html实现静态相对路径调用第三方js文件
    前言  前面做了一些交互,网页是直接通过html对response进行返回的,这里QtWebApp与传统的web服务器不同,传统的web服务器可以调用同级目录相对路径或者绝对路径下的js,而QtWebApp的httpserver是response返回当前页面的问题,默认是无法调用的。  为了解决调用一些依赖的如echarts......
  • mysql 启动提示:错误2系统找不到指定文件;
    mysql启动后系统提示错误:mysql启动提示:错误2系统找不到指定文件;问题解决过程:注册表位置: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql图中所示的位置与拷贝到服务器的mysql部署位置不一致,修改后,系统启动正常。  修改后,mysql正常启动。 ......
  • 如何把任意文件固定到Win10开始屏幕/菜单
    如何把任意文件固定到Win10开始屏幕/菜单windows教程 2023-01-08把任意文件固定到Win10开始菜单。方法如下:我们的实现原理就是让点击任意文件(或快捷方式)时在右键菜单中添加“固定到开始屏幕”选项,添加的方法就是修改注册表。因为需要修改的注册表信息较多,所以我们可以制作r......
  • Windows批量修改或去除文件前缀脚本
    chcp65001@echooffsetlocalEnableDelayedExpansionset/pfolderPath="请输入需要修改前缀的文件夹路径:"set/poldPrefix="请输入原前缀:"set/pnewPrefix="请输入新前缀:"for%%iin("%folderPath%\%oldPrefix%*")do(set"filen......
  • linux服务器mysql的简单安装和使用(基于二进制文件方式)
    mysql下载地址https://downloads.mysql.com/archives/community/版本选择 直接放置/root目录下     常规操作查找以前是否装有mysqlrpm-qa|grep-imysql如果找到或者以前安装过有遗留文件,操作如下命令删除命令:rpm-e--nodeps包名删除老版本m......
  • 如何降低Vue.js项目中Webpack打包文件的大小?
    结论结论:vue中,直接引用文件,可以让打包文件最小。试验记录下面测试项目中引入一个Button组件的代价。基准工程大小:[raywill:shop]npmrunbuild>shop@build/Users/raywill/code/vue/shop>cross-envNODE_ENV=productionwebpack--progress--hide-modulesHash:d902d9dc5e......
  • vue在线预览pdf、word、xls、ppt等office文件
    perview(row){consttypeArr=['doc','docx','ppt','pptx','xls','xlsx']letarr=row.url.split('.')letfileType=arr[arr.length-1]leturl=''......