1.读取行总数只能使用poi
Path excelFilePath = Paths.get(intput);
// Use WorkbookFactory to create a Workbook object from the file
Workbook workbook = WorkbookFactory.create(excelFilePath.toFile());
// Iterate over each sheet in the workbook
for (Sheet sheet : workbook) {
// Print sheet name
System.out.println("Sheet Name: " + sheet.getSheetName());
// Get the number of rows in the sheet
int rowCount = sheet.getPhysicalNumberOfRows();
System.out.println("Number of Rows: " + rowCount);
}
// Close the workbook to release resources
workbook.close();
}
2.读取第一行
EasyExcel.read(inputPath,clazz, new ReadListener<ExcelChecker>() {
@Override
public void invoke(ExcelChecker data, AnalysisContext context) {
firstData[0] = data;
throw new ExcelAnalysisStopException("只读取第一行数据"); //只能通过异常打断
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}).head(clazz).charset(StandardCharsets.UTF_8).sheet().headRowNumber(0).doRea()
3.读取csv默认支持该格式
4.csv处理数据内的换行符
@ContentStyle(wrapped = BooleanEnum.TRUE)
wrapp处理列值本身有可能出现换行的,因为csv默认以换行符为一条完整的行数据,但是如何数据本身也换行了,就需要特殊处理,即在数据外围增加"",此时解析的对象也需要增加属性
easyexcel本身支持的一些属性注解:https://blog.csdn.net/cccsssrrr/article/details/127813042?spm=1001.2014.3001.5502
5.csv数据行内前后有空格默认会被自动去掉,需要增加autotrim属性
EasyExcel.read(reqDTO.getReadPath(), clz,
new PageReadListener0(new ExecelCheckConsumer(this, callbackEvery), readBatchSize, this,
callbackEvery))
.charset(StandardCharsets.UTF_8)
.sheet()
.autoTrim(false) // 不自动去除首尾空格
.doRead();