java - 步骤卡住。当文件很大时,PoiItemreader 不会读取 Excel 文件。有什么建议吗?

标签 java spring-boot spring-batch batch-processing spring-batch-excel

我尝试在 Spring Batch 中使用 PoiItemreader 处理 Excel 文件。当 Excel 文件较小或正常大小时,程序可以成功运行。但是,当我尝试处理更大的文件(大于 12MB)时。该文件根本没有被读取。

我有以下问题:

  1. 使用 PoiItemreader 的文件大小限制是多少?
  2. 使用 MultiResourcePartioner 可以解决此问题场景吗?

非常感谢。

这是我的代码:

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;
    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job csvProcessJob() throws FileNotFoundException {
        return jobBuilderFactory.get("csvProcessJob")
                .incrementer(new RunIdIncrementer())
                .flow(csvProcessStep())
                .end()
                .build();
    }

    @Bean
    public Step csvProcessStep() throws FileNotFoundException {
        return stepBuilderFactory.get("stepCSVprocess")
                .<String, Map<String, AttributeValue>> chunk(25)
                .reader(excelReader())
                .processor(processor())
                .writer(writer())
                .build();
    }

    @Bean
    public PoiItemReader excelReader() throws FileNotFoundException {
        PoiItemReader reader = new PoiItemReader();
        reader.setLinesToSkip(1);
        reader.setResource(new ClassPathResource("file_name.xls"));
        reader.setRowMapper(excelRowMapper());
        return reader;
    }

    private RowMapper<MetaData> excelRowMapper() {
        return new MetaDataRowMapper();
    }

    @Bean
    public ItemProcessor<MetaData,Map<String,AttributeValue>> processor() {
        return new MapProcessor();
    }

    @Bean
    public ItemWriter writer() {
        return new AWSwriter();
    }

最佳答案

更新我的问题,我按照 M. Deinum 帖子中评论中的链接进行操作,并能够将其合并到我自己的自定义 itemreader 中。现在该程序可以正常运行,但缺点是它仅适用于 .xlsx 而不是 .xls

关于java - 步骤卡住。当文件很大时,PoiItemreader 不会读取 Excel 文件。有什么建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59925889/

相关文章:

Java 设计 : which approach is good

java - 使用更大的堆空间重新启动 JVM

java - 尽管满足条件,while 循环仍不循环

Spring Batch-如何在处理器中同时处理多条记录?

spring - 意外的 token (START_OBJECT),应为 VALUE_STRING : need JSON String that contains type id (for subtype of java. lang.Object)

java - 崩溃可能是由于错误的 Activity 布局

java - 处理程序调度失败;嵌套异常是具有根本原因的 java.lang.StackOverflowError

hibernate - 如何在 spring data jpa 中使用预测和规范?

spring-boot - Spring batch item writer rest API

java - 使用 AnnotationConfigApplicationContext 时禁用 Spring 日志记录