| | |
| | | |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook |
| | | import org.apache.poi.ss.util.CellRangeAddress |
| | | import org.apache.poi.xssf.streaming.SXSSFWorkbook |
| | | import java.time.LocalDate |
| | | import java.util.* |
| | | import kotlin.math.max |
| | |
| | | /** |
| | | * 自动处理行合并数据 |
| | | */ |
| | | fun write2(heads: List<String>, contents: List<Array<Any>>, workbook: HSSFWorkbook, sheetName:String) { |
| | | fun write2(heads: List<String>, contents: List<Array<Any>>, workbook: SXSSFWorkbook, sheetName:String) { |
| | | |
| | | val sheet = workbook.createSheet(sheetName) |
| | | |
| | |
| | | /** |
| | | * 自动处理行合并数据 |
| | | */ |
| | | fun write(heads: List<Array<String>>, contents: List<Array<Any>>, workbook: HSSFWorkbook, sheetName: String = "sheet1") { |
| | | fun write(heads: List<Array<String>>, contents: List<Array<Any>>, workbook: SXSSFWorkbook, sheetName: String = "sheet1", row: Int = 0): Int { |
| | | |
| | | val sheet = workbook.createSheet(sheetName) |
| | | println("sheet: $sheetName") |
| | | val sheet = workbook.getSheet(sheetName)?: workbook.createSheet(sheetName) |
| | | // println("sheet: $sheetName") |
| | | |
| | | var rowIndex = 0 |
| | | var rowIndex = row |
| | | |
| | | heads.forEach { |
| | | val rows = sheet.createRow(rowIndex) |
| | |
| | | cell[0] |
| | | } |
| | | } else { |
| | | //当数据不是数组时,需要按最大行数合并单元格 |
| | | //当数据不是数组时,根据设置合并 |
| | | if (cell is MyCell) { |
| | | rowspan = cell.rowSpan |
| | | colSpan = cell.colSpan |
| | |
| | | when (c) { |
| | | is MyCell -> { |
| | | rows.createCell(col).apply { |
| | | c.fontColor?.let {fC -> |
| | | c.fontColor?.let { fC -> |
| | | val font = workbook.createFont() |
| | | val cellStyle = workbook.createCellStyle() |
| | | |
| | |
| | | // workbook.close() |
| | | // out.flush() |
| | | // out.close() |
| | | return rowIndex |
| | | } |
| | | |
| | | private fun getMaxRows(rowArray: Array<Any>): Int { |