【POI】java服務生成List數據集合,後臺服務生成xlsx臨時文件,並將臨時文件上傳到騰訊雲上

場景:java

  java服務生成List數據集合,後臺服務生成xlsx臨時文件,並將臨時文件上傳到騰訊雲上數據庫

 

今日份代碼:服務器

  

 

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<> 結果集ide

   2.將結果集,生成xlsx文件,並將文件做爲臨時文件保存在服務器端【這裏取的是項目的根目錄做爲 臨時目錄】編碼

   3.而後將臨時文件  上傳至 雲服務器上,最後,刪除掉服務器端的 臨時文件 spa

 

 

 

 

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;
    }
相關文章
相關標籤/搜索