Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring启动-异步写入多个Excel工作表_Java_Spring Boot_Asynchronous_Async Await_Completable Future - Fatal编程技术网

Java Spring启动-异步写入多个Excel工作表

Java Spring启动-异步写入多个Excel工作表,java,spring-boot,asynchronous,async-await,completable-future,Java,Spring Boot,Asynchronous,Async Await,Completable Future,我必须将数据填充到多张excel表格中,由于每张表格中要写入的数据量很大,处理时间非常慢,我需要异步写入表格 我有一个控制器,它将返回工作簿的ByteArrayOutputStream 到目前为止,我所做的尝试如下 @PostMapping("/downloadFile") public ResponseEntity<Resource> getFile(@RequestPart("reqObj") String reqO

我必须将数据填充到多张excel表格中,由于每张表格中要写入的数据量很大,处理时间非常慢,我需要异步写入表格

我有一个控制器,它将返回工作簿的ByteArrayOutputStream

到目前为止,我所做的尝试如下

      @PostMapping("/downloadFile")
      public ResponseEntity<Resource> getFile(@RequestPart("reqObj") String reqObj) {
          logger.info("*************** Inside downloadFile API *****************");
          JSONObject jsonObject = new JSONObject(reqObj);         
          return fileGeneration.generate(jsonObject.getInt("Id"));
      }
和异步服务下面

@Service
public class BaseLineDcmFileGenerationAsyncService {
    @Async("asyncExecutor")
    public CompletableFuture populateSheetOne(Workbook workbook, SheetOne sheetOneData) {
        
          Sheet sheet = workbook.getSheet("SheetOne");

          Row headerRow = sheet.createRow(0);

          for (int col = 0; col < headers.length; col++) {
            Cell cell = headerRow.createCell(col);
            cell.setCellStyle(setBoldFont(workbook));
            cell.setCellValue("value_from_an_static_array");
          }

          for(int i = 0; i < sheetOneData.size(); i++) {
            Row row = sheet.createRow(i+1);
            
            row.createCell(0).setCellValue(sheetOneData.getData());
            .....
          }
          
        return CompletableFuture.completedFuture(workbook);
    }
    
    @Async("asyncExecutor")
    public CompletableFuture populateSheetOne(Workbook workbook, SheetTwo sheetTwoData) {
        
          Sheet sheet = workbook.getSheet("SheetTwo");

          Row headerRow = sheet.createRow(0);

          for (int col = 0; col < headers.length; col++) {
            Cell cell = headerRow.createCell(col);
            cell.setCellStyle(setBoldFont(workbook));
            cell.setCellValue("value_from_an_static_array");
          }

          for(int i = 0; i < sheetTwoData.size(); i++) {
            Row row = sheet.createRow(i+1);
            
            row.createCell(0).setCellValue(sheetTwoData.getData());
            .....
          }
          
        return CompletableFuture.completedFuture(workbook);
    }
    
    private CellStyle setBoldFont(Workbook wb) {
        CellStyle style = wb.createCellStyle();
        Font font = wb.createFont();
        font.setBold(true);
        style.setFont(font);
        return style;
    }
}
@服务
公共类BaseLineDcmFileGenerationAsyncService{
@异步(“异步执行器”)
public CompletableFuture populateSheetOne(工作簿工作簿,SheetOne sheetOneData){
Sheet Sheet=工作簿.getSheet(“SheetOne”);
Row headerRow=sheet.createRow(0);
for(int col=0;col
@Configuration
@EnableAsync
public class AsyncConfiguration 
{
    @Bean(name = "asyncExecutor")
    public Executor asyncExecutor() 
    {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(10);
        executor.setMaxPoolSize(10);
        executor.setQueueCapacity(100);
        executor.setThreadNamePrefix("AsynchThread-");
        executor.initialize();
        return executor;
    }
}
@Service
public class BaseLineDcmFileGenerationAsyncService {
    @Async("asyncExecutor")
    public CompletableFuture populateSheetOne(Workbook workbook, SheetOne sheetOneData) {
        
          Sheet sheet = workbook.getSheet("SheetOne");

          Row headerRow = sheet.createRow(0);

          for (int col = 0; col < headers.length; col++) {
            Cell cell = headerRow.createCell(col);
            cell.setCellStyle(setBoldFont(workbook));
            cell.setCellValue("value_from_an_static_array");
          }

          for(int i = 0; i < sheetOneData.size(); i++) {
            Row row = sheet.createRow(i+1);
            
            row.createCell(0).setCellValue(sheetOneData.getData());
            .....
          }
          
        return CompletableFuture.completedFuture(workbook);
    }
    
    @Async("asyncExecutor")
    public CompletableFuture populateSheetOne(Workbook workbook, SheetTwo sheetTwoData) {
        
          Sheet sheet = workbook.getSheet("SheetTwo");

          Row headerRow = sheet.createRow(0);

          for (int col = 0; col < headers.length; col++) {
            Cell cell = headerRow.createCell(col);
            cell.setCellStyle(setBoldFont(workbook));
            cell.setCellValue("value_from_an_static_array");
          }

          for(int i = 0; i < sheetTwoData.size(); i++) {
            Row row = sheet.createRow(i+1);
            
            row.createCell(0).setCellValue(sheetTwoData.getData());
            .....
          }
          
        return CompletableFuture.completedFuture(workbook);
    }
    
    private CellStyle setBoldFont(Workbook wb) {
        CellStyle style = wb.createCellStyle();
        Font font = wb.createFont();
        font.setBold(true);
        style.setFont(font);
        return style;
    }
}