示例使用上傳的文件寫回到瀏覽器
@PostMapping("/importExcelWriteIt")
public void importExcelWriteIt(@RequestParam("file") MultipartFile file, HttpServletResponse response) throws IOException {
// 一、設置響應頭
response.setHeader("Content-Type", "application/octet-stream");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + System.currentTimeMillis() + ".xlsx");
// 二、寫的對象
ExcelWriterBuilder writeBuilder = new ExcelWriterBuilder();
// 設置回寫到瀏覽器
writeBuilder.file(response.getOutputStream());
// 使用請求的模板直接修改後返回
writeBuilder.withTemplate(file.getInputStream());
writeBuilder.inMemory(true);
ExcelWriter excelWriter = writeBuilder.build();
// 創建sheet
ExcelWriterSheetBuilder sheetBuilder = new ExcelWriterSheetBuilder();
sheetBuilder.sheetName("1");
excelWriter.write(Collections.emptyList(), sheetBuilder.build());
XSSFSheet sheet = (XSSFSheet) excelWriter.writeContext().writeSheetHolder().getSheet();
// 獲取指定行後寫到指定單元格
XSSFRow row = sheet.getRow(1);
XSSFCell cell = row.createCell(2);
cell.setCellValue("寫入了");
excelWriter.finish();
}
使用上傳的文件進行加工發送
@PostMapping("/importExcelWriteIt")
public void importExcelWriteIt2(@RequestParam("file") MultipartFile file, HttpServletResponse response) throws IOException {
// 寫的對象
ExcelWriterBuilder writeBuilder = new ExcelWriterBuilder();
writeBuilder.withTemplate(file.getInputStream());
writeBuilder.inMemory(true);
// 寫到這裏面
ByteArrayOutputStream out = new ByteArrayOutputStream();
writeBuilder.file(out);
ExcelWriter excelWriter = writeBuilder.build();
ExcelWriterSheetBuilder sheetBuilder = new ExcelWriterSheetBuilder();
sheetBuilder.sheetName("1");
excelWriter.write(Collections.emptyList(), sheetBuilder.build());
XSSFSheet sheet = (XSSFSheet) excelWriter.writeContext().writeSheetHolder().getSheet();
XSSFRow row = sheet.getRow(1);
XSSFCell cell = row.createCell(2);
cell.setCellValue("寫入了");
excelWriter.finish();
// 在此處可以講此文件流發送等 示例
String uploadFileUrl = "http://logistics-file-atomic/oss/file/upload/sdk";
MultiValueMap<String, Object> multipart = new LinkedMultiValueMap<>();
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("file", file.getOriginalFilename());
multipart.add("file", new HttpEntity<>(new ByteArrayResource(out.toByteArray()), headers));
multipart.add("userCode", "c-pms");
multipart.add("bucket", "c-pms");
multipart.add("businessKey", "C-PMS");
multipart.add("contentType", "application/octet-stream");
multipart.add("publicRead", 1);
restTemplate.postForObject(uploadFileUrl, multipart, Map.class);
}