場景:java
java服務生成List數據集合,後臺服務生成xlsx臨時文件,並將臨時文件上傳到騰訊雲上數據庫
今日份代碼:服務器
private static final String UPLOAD_TEMP_FILE_NAME = "商品數據.xlsx";
//3.獲取查詢結果 List<結果類> result = exportDataService.searchData(recordKey); //4.生成xlsx文件 File xlsxFile = createXlsxFile(result); //5.上傳騰訊雲(本身封裝調用騰訊雲提供的接口) String foreverUrl = offlineSchemePromotionService.uploadAndGetDownloadUrl(xlsxFile);
1.查詢數據庫或者什麼,獲取List<> 結果集ide
2.將結果集,生成xlsx文件,並將文件做爲臨時文件保存在服務器端【這裏取的是項目的根目錄做爲 臨時目錄】編碼
3.而後將臨時文件 上傳至 雲服務器上,最後,刪除掉服務器端的 臨時文件 spa
/** * 生成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; }
@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; }