场景:
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<> 结果集
2.将结果集,生成xlsx文件,并将文件作为临时文件保存在服务器端【这里取的是项目的根目录作为 临时目录】
3.然后将临时文件 上传至 云服务器上,最后,删除掉服务器端的 临时文件
4.生成xlsx文件
/*** 生成xlsx文件
*@paramlist
*@return*@throwsIOException*/
private File createXlsxFile(List list) throwsIOException{
XSSFWorkbook workbook= newXSSFWorkbook();
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= newFile(filePath);if (!file.exists()){
file.createNewFile();
}
FileOutputStream outputStream= newFileOutputStream(filePath);
workbook.write(outputStream);
outputStream.close();returnfile;
}private String getCellValue(int cellNum,ProSearchInfoDisplay display,booleanisHead){
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= "";
}returnresult;
}/*** 获取临时文件路径
*@return
*/
privateString getFilePath(){
String path= ProExportDataJob.class.getResource("/").getPath()+UPLOAD_TEMP_FILE_NAME;returnpath;
}
5.上传腾讯云(自己封装调用腾讯云提供的接口)
@OverridepublicString uploadAndGetDownloadUrl(File file) {
String foreverUrl= null;if(file.exists()){
String fileName=file.getName();
foreverUrl=dmallCosHelper.uploadAndGetDownloadUrl(file, fileName);
file.delete();//即刻删除(删除服务器上生成的临时文件)
}returnforeverUrl;
}
原文:https://www.cnblogs.com/sxdcgaq8080/p/11661009.html