@file:Suppress("UNCHECKED_CAST")
|
|
package cn.flightfeather.supervision.common.docimport
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook
|
import org.apache.poi.ss.usermodel.Row
|
|
object ExcelImport {
|
|
fun <T : BaseExcelRule> parseToDataList(workbook: HSSFWorkbook, ruleClz: Class<T>, header: List<String>): List<T> {
|
if (!checkLegal(workbook, ruleClz, header)) return emptyList()
|
|
val result = mutableListOf<T>()
|
val sheet1 = workbook.getSheetAt(0)
|
val rowIterator = sheet1.rowIterator()
|
while (rowIterator.hasNext()) {
|
val row = rowIterator.next()
|
if (row.rowNum > 0) {
|
if (row.getCell(0).toString().trim().isNotBlank()) {
|
val data = parseToData(row, ruleClz, header)
|
result.add(data)
|
}
|
}
|
}
|
|
return result
|
}
|
|
private fun <T : BaseExcelRule> checkLegal(workbook: HSSFWorkbook, ruleClz: Class<T>, header:List<String>):
|
Boolean {
|
// TODO: 2023/8/30 表头合法性检查
|
return true
|
}
|
|
private fun <T : BaseExcelRule> parseToData(row: Row, ruleClz: Class<T>, header: List<String>): T {
|
val params = mutableListOf<String>()
|
repeat(header.size) {
|
params.add(row.getCell(it).toString().trim())
|
}
|
return ruleClz.constructors[0].newInstance(*params.toTypedArray()) as T
|
}
|
}
|