easyexcel.headrownumber
时间: 2023-07-24 18:23:32 浏览: 102
`headrownumber` 是 EasyExcel 中的一个参数,它表示表头所在的行数。当我们使用 EasyExcel 读取 Excel 文件时,需要指定表头所在的行数,这样 EasyExcel 才能正确地读取数据。
例如,如果表头在第一行,我们需要将 `headrownumber` 设置为 1:
```java
EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).headRowNumber(1).sheet().doRead();
```
如果表头在第二行,我们需要将 `headrownumber` 设置为 2:
```java
EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).headRowNumber(2).sheet().doRead();
```
如果不指定表头所在的行数,EasyExcel 默认会将第一行作为表头。
需要注意的是,`headrownumber` 的取值应该是大于 0 的整数。如果设置为 0 或者负数,EasyExcel 会抛出异常。
相关问题
EasyExcel.headRowNumber(2)
EasyExcel.headRowNumber(2)是EasyExcel的一个方法,用于指定Excel文件中表格数据的起始行数。其中,参数2表示数据起始行为第2行。这个方法可以在读取或写入Excel文件时使用。例如,在读取一个Excel文件时,如果表格数据起始行不是第1行,就可以使用这个方法来指定数据起始行。
for (ReadSheet sheet : listSheet(stream, type)) { Integer sheetNo = sheet.getSheetNo(); String sheetName = sheet.getSheetName(); if(0 == sheetNo){ EasyExcel.read(stream,TbTradeBlotterOpSec.class, EasyExcelUtils.getReadListener(dataProcess())).excelType(type).charset(Charset.forName("UTF-8")).sheet(sheetNo).sheetName(sheetName).headRowNumber(1).doRead(); } if(1 == sheetNo){ EasyExcel.read(stream, TbTradeBlotterOpBondMaster.class, EasyExcelUtils.getReadListener(dataProcess2())).excelType(type).charset(Charset.forName("UTF-8")).sheet(sheetNo).sheetName(sheetName).headRowNumber(1).doRead(); } if(2==sheetNo){ EasyExcel.read(stream, TbTradeBlotterOpSecPos.class, EasyExcelUtils.getReadListener(dataProcess3())).excelType(type).charset(Charset.forName("UTF-8")).sheet(sheetNo).sheetName(sheetName).headRowNumber(1).doRead(); } if(3== sheetNo){ EasyExcel.read(stream,TbTradeBlotterOpMm.class, EasyExcelUtils.getReadListener(dataProcess4())).excelType(type).charset(Charset.forName("UTF-8")).sheet(sheetNo).sheetName(sheetName).headRowNumber(1).doRead(); } if(4==sheetNo){ EasyExcel.read(stream,TbTradeBlotterOpFx.class, EasyExcelUtils.getReadListener(dataProcess5())).excelType(type).charset(Charset.forName("UTF-8")).sheet(sheetNo).sheetName(sheetName).headRowNumber(1).doRead(); } if(5==sheetNo){ EasyExcel.read(stream,TbTradeBlotterOpCp.class, EasyExcelUtils.getReadListener(dataProcess6())).excelType(type).charset(Charset.forName("UTF-8")).sheet(sheetNo).sheetName(sheetName).headRowNumber(1).doRead(); } }简化这段代码
可以将这段代码进行简化,使用一个 Map 对象来保存需要读取的表格类型和对应的 Class 类型,然后使用循环遍历 Map 对象,根据表格类型和 Class 类型来读取对应的表格。
简化后的代码如下所示:
```
Map<Integer, Class<?>> sheetMap = new HashMap<>();
sheetMap.put(0, TbTradeBlotterOpSec.class);
sheetMap.put(1, TbTradeBlotterOpBondMaster.class);
sheetMap.put(2, TbTradeBlotterOpSecPos.class);
sheetMap.put(3, TbTradeBlotterOpMm.class);
sheetMap.put(4, TbTradeBlotterOpFx.class);
sheetMap.put(5, TbTradeBlotterOpCp.class);
for (ReadSheet sheet : listSheet(stream, type)) {
Integer sheetNo = sheet.getSheetNo();
String sheetName = sheet.getSheetName();
Class<?> clazz = sheetMap.get(sheetNo);
if (clazz != null) {
EasyExcel.read(stream, clazz, EasyExcelUtils.getReadListener(dataProcess()))
.excelType(type)
.charset(Charset.forName("UTF-8"))
.sheet(sheetNo)
.sheetName(sheetName)
.headRowNumber(1)
.doRead();
}
}
```
这样做的好处是代码更加简洁,易于维护,如果需要增加新的表格类型,只需要在 Map 对象中添加对应的键值对即可。