行次 分保费 应付保费 分保佣金 累计 累计 累计 这种双层表头应该怎么创建实体类,并读excel中的数据到实体类中用Jeecg Boot
时间: 2024-09-18 22:14:26 浏览: 34
在Jeecg Boot中,为了处理这种双层表头的数据结构,你可以创建两个嵌套的实体类,分别对应于顶层的行次和底层的具体费用项。这里给出一个简单的示例:
1. **基础表头实体类**(假设名为`BaseHeader`):
```java
public class BaseHeader {
private String rowKey; // 行次
// 可能还有其他公共属性,如日期或其他通用信息
// getters and setters
}
```
2. **费用明细实体类**(假设名为`ExpenseItem`):
```java
@ExcelProperty(value = "分保费")
public class ExpenseItem extends BaseHeader {
@ExcelField(columnIndex = 1)
private Double premium; // 分保费
@ExcelField(columnIndex = 2)
private Double payablePremium; // 应付保费
@ExcelField(columnIndex = 3)
private Double commision; // 分保佣金
@ExcelField(columnIndex = 4)
private Double cumulativePremium; // 累计分保费
@ExcelField(columnIndex = 5)
private Double cumulativePayablePremium; // 累计应付保费
@ExcelField(columnIndex = 6)
private Double cumulativeCommission; // 累计分保佣金
// getters and setters
}
```
注意:`@ExcelProperty` 和 `@ExcelField` 注解来自Apache POI或者Jeecg提供的ExcelUtil,用于标识Excel文件中的列映射。
要从Excel中读取数据,可以利用Jeecg提供的ExcelService,例如:
```java
@Autowired
private ExcelService excelService;
public void importData(List<ExpenseItem> expenseItems, File excelFile) {
List<BaseHeader> baseHeaders = excelService.importExcel(BaseHeader.class, excelFile); // 获取顶层行次
for (BaseHeader header : baseHeaders) {
ExpenseItem item = new ExpenseItem();
item.setRowKey(header.getRowKey());
// 遍历header的列数据,根据索引填充ExpenseItem对象
// ... 使用excelService.getCellValue(item, columnIndex) 获取单元格值
expenseItems.add(item);
}
}
```
这样,你就可以将Excel数据导入到`ExpenseItem`列表中了。
阅读全文