GitHub user bengbengbalabalabeng added a comment to the discussion: 
我想先获得所有行数量,如何做到?

在文件大小可控的情况下,可以通过 Apache POI 的 API 预先获取行数,例如:

```java
try (XSSFWorkbook workbook = new XSSFWorkbook(PATHNAME)) {
    XSSFSheet sheet = workbook.getSheetAt(0);
    int totalRows = sheet.getLastRowNum() + 1;
    log.info("Total rows = {}", totalRows);
}
```

不过,如果行数仅用于前端进度条渲染,而并非业务上的强依赖项,那么也可以考虑使用 “伪进度条” 的方式处理:

↓ Web 端提交任务
↓ Server 端以异步 ~~(同步)~~ 方式处理解析
↓ Web 端按固定(自定义)节奏模拟进度(1% → 99%)
↓ Server 处理解析完成后,在 `doAfterAllAnalysed` 中发送任务完成事件
↓ Web 将进度更新为 100%

这种方式在多数场景下基本能够兼顾用户体验,同时避免为了获取行数而提前读取整个文件。

GitHub link: 
https://github.com/apache/fesod/discussions/892#discussioncomment-16410523

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to