Шаг замирает. PoiItemreader не читает файл Excel, если файл большой. Любое предложение?
Я попытался обработать файл Excel с помощью PoiItemreader в Spring Batch. Программа успешно работает, когда файл Excel меньше или нормального размера. Однако, когда я попытался обработать файл большего размера (больше 12 МБ). Файл вообще не читается.
У меня следующие вопросы:
- Каков предел размера файла для использования PoiItemreader?
- Будет ли использование 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();
}
1 ответ
Решение
Обновите свой вопрос, я перехожу по ссылке в комментарии как сообщение M. Deinum и могу добавить его в свой собственный читатель предметов. Теперь программа работает правильно, с другой стороны, она работает только с.xlsx, а не с.xls.