• 【POI】java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上,并实现xlsx浏览器预览


    场景:

      java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上

     

    注意:

       如果生成的xlsx文件是超大的xlsx文件,可以采用阿里的easyExcel方案

      https://www.cnblogs.com/sxdcgaq8080/p/11791832.html

     

    今日份代码:

      

    1.先是一个变量,作为文件名

    private static final String UPLOAD_TEMP_FILE_NAME = "商品数据.xlsx";

     

    2.核心方法:

                //3.获取查询结果
                        List<结果类> result = exportDataService.searchData(recordKey);
                        //4.生成xlsx文件
                        File xlsxFile = createXlsxFile(result);
                        //5.上传腾讯云(自己封装调用腾讯云提供的接口)
                        String foreverUrl = offlineSchemePromotionService.uploadAndGetDownloadUrl(xlsxFile);

     

    3.核心思想:

       1.查询数据库或者什么,获取List<> 结果集

       2.将结果集,生成xlsx文件,并将文件作为临时文件保存在服务器端【这里取的是项目的根目录作为 临时目录】

       3.然后将临时文件  上传至 云服务器上,最后,删除掉服务器端的 临时文件 

     

     

     

     

    4.生成xlsx文件

    /**
         * 生成xlsx文件
         * @param list
         * @return
         * @throws IOException
         */
        private File createXlsxFile(List<ProSkuSearchInfoDisplay> list) throws IOException{
    
            XSSFWorkbook  workbook = new XSSFWorkbook();
            Sheet sheet = workbook.createSheet("商品数据");
    
            XSSFFont font = workbook.createFont();
            font.setBold(true);
            font.setFontHeightInPoints((short) 15);
    
            XSSFCellStyle style = workbook.createCellStyle();
            style.setFillBackgroundColor(HSSFColor.RED.index);
            style.setFillPattern(XSSFCellStyle.LEAST_DOTS);
            style.setFont(font);
    
    
            Row row = sheet.createRow(0);
            row.setHeight((short) (500));
            Cell cell;
            int cellNum = 12;
            for (int i = 0; i < cellNum; i++) {
                cell = row.createCell(i);
                sheet.setColumnWidth(i, 6000);
                cell.setCellValue(getCellValue(i,null,true));
                cell.setCellStyle(style);
    
            }
    
    
            for (int i = 0; i < list.size(); i++) {
                row = sheet.createRow(i+1);
                ProSearchInfoDisplay proSearchInfoDisplay = list.get(i);
                for (int i1 = 0; i1 < cellNum; i1++) {
                    cell = row.createCell(i1);
                    cell.setCellValue(getCellValue(i1,proSearchInfoDisplay,false));
                }
            }
    
            String filePath = getFilePath();
            File file = new File(filePath);
            if (!file.exists()){
                file.createNewFile();
            }
            FileOutputStream outputStream = new FileOutputStream(filePath);
            workbook.write(outputStream);
            outputStream.close();
    
            return file;
        }
    
        private String getCellValue(int cellNum,ProSearchInfoDisplay display,boolean isHead){
            String result = "";
            switch (cellNum){
                case 0: result = isHead ? "商品ID" : String.valueOf(display.getId()); break;
                case 1: result = isHead ? "物料编码" : display.getMatnrCode(); break;
                case 2: result = isHead ? "商品名称" : display.getName(); break;
                
    
                default: result = "";
            }
            if (StringUtils.isBlank(result)){
                result = "";
            }
    
            return result;
        }
    
        /**
         * 获取临时文件路径
         * @return
         */
        private String getFilePath(){
            String path = ProExportDataJob.class.getResource("/").getPath()+UPLOAD_TEMP_FILE_NAME;
    
            return path;
        }

     

     

    5.上传腾讯云(自己封装调用腾讯云提供的接口)

    @Override
        public String uploadAndGetDownloadUrl(File file) {
    
            String foreverUrl = null;
            if (file.exists()){
                String fileName = file.getName();
                foreverUrl = dmallCosHelper.uploadAndGetDownloadUrl(file, fileName);
                file.delete();//即刻删除(删除服务器上生成的临时文件)
            }
            return foreverUrl;
        }

     

    6.上传得到的url直接提供在页面的a标签,即可

    <a  href="写自己的URL地址即可 http://******">下载</a>

    7.实现xlsx预览

    https://www.cnblogs.com/sxdcgaq8080/p/12097835.html

  • 相关阅读:
    线程与进程
    Java集合框架体系JCF
    Java异常
    抽象,接口和Object类
    Java三大特性
    面向对象
    数组
    Java 控制结构与方法
    数据类型与变量
    Java基础之入门
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/11661009.html
Copyright © 2020-2023  润新知