From da431c25dfe5122e4ed70372da36ede3e4eaec4a Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期五, 31 五月 2024 17:43:41 +0800 Subject: [PATCH] 1. 新增自动报告生成功能 --- src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt | 36 ++++++++++++++++++++++++++++-------- 1 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt b/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt index 5d2a37b..c73f36b 100644 --- a/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt +++ b/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt @@ -1,13 +1,13 @@ package com.flightfeather.uav.common.utils -import com.flightfeather.uav.common.exception.ResponseErrorException +import com.flightfeather.uav.common.exception.BizException +import org.apache.poi.hssf.usermodel.HSSFRow +import org.apache.poi.hssf.usermodel.HSSFWorkbook import org.apache.poi.ss.usermodel.Row import org.apache.poi.ss.util.CellRangeAddress import org.apache.poi.xssf.streaming.SXSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFRow import org.apache.poi.xssf.usermodel.XSSFWorkbook -import org.jetbrains.kotlin.incremental.isJavaFile -import java.io.ByteArrayInputStream import java.io.File import java.io.FileInputStream import java.io.InputStream @@ -36,15 +36,18 @@ * @param headerCheck 鏂囦欢棣栬妫�鏌ュ洖璋� * @param onRow 鍗曡鍐呭鍥炶皟锛屼粠绗簩琛屽紑濮� */ - fun read(file: File, headerCheck: (header: XSSFRow) -> Boolean, onRow: (row: Row) -> Unit): Boolean { - if (!file.exists() || !file.isFile) throw ResponseErrorException("it's not a normal file!") + fun readXLXS(file: File, headerCheck: (header: XSSFRow) -> Boolean, onRow: (row: Row) -> Unit): Boolean { + if (!file.exists() || !file.isFile) throw BizException("it's not a normal file!") if (!file.extension.equals("xls", ignoreCase = true) || !file.extension.equals("xlsx", ignoreCase = true)) { - throw ResponseErrorException("file's extension name should be xls or xlsx!") + throw BizException("file's extension name should be xls or xlsx!") } - return read(FileInputStream(file), headerCheck, onRow) + return readXLXS(FileInputStream(file), headerCheck, onRow) } - fun read(input: InputStream, headerCheck: (header: XSSFRow) -> Boolean, onRow: (row: Row) -> Unit): Boolean { + /** + * 鍖呮嫭 .xlsx 鏂囦欢 + */ + fun readXLXS(input: InputStream, headerCheck: (header: XSSFRow) -> Boolean, onRow: (row: Row) -> Unit): Boolean { val workbook = XSSFWorkbook(input) val sheet1 = workbook.getSheetAt(0) val header = sheet1.getRow(sheet1.topRow.toInt()) @@ -59,6 +62,23 @@ } /** + * 鍖呮嫭 .xls .csv 鏂囦欢 + */ + fun readXLS(input: InputStream, headerCheck: (header: HSSFRow) -> Boolean, onRow: (row: Row) -> Unit): Boolean { + val workbook = HSSFWorkbook(input) + val sheet1 = workbook.getSheetAt(0) + val header = sheet1.getRow(sheet1.topRow.toInt()) + return if (headerCheck(header)) { + // 鑾峰彇杩唬鍣ㄥ苟鍘婚櫎绗竴琛屾爣棰� + val iterator = sheet1.rowIterator().also { it.next() } + iterator.forEach { onRow(it) } + true + } else { + false + } + } + + /** * 鑷姩澶勭悊琛屽悎骞舵暟鎹� */ fun write2(heads: List<String>, contents: List<Array<Any>>, workbook: SXSSFWorkbook, sheetName: String) { -- Gitblit v1.9.3