feiyu02
2024-04-25 0392c333ed3d987cb2ab3dac4e1a972cff405f21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package cn.flightfeather.supervision.business.report
 
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
import java.util.*
 
/**
 * 各模板合并输出为整体文档
 * 多个数据源
 */
abstract class BaseExcelMulti(private val dataSourceList: List<DataSource>) {
 
    abstract val templates: List<BaseTemplateMulti>
 
    abstract val fileName: String
 
    // excel文档
    private var workbook = HSSFWorkbook()
 
    fun getReportName(): String = "${dataSourceList[0].areaName()}-${fileName}.xls"
 
    fun toFile(path: String) {
        val fileName = getReportName()
        val file = File(path + fileName)
        if (!file.parentFile.exists()) {
            file.parentFile.mkdirs()
        }
        val out = FileOutputStream(file)
        toOutputStream(out)
    }
 
    fun toOutputStream(out: OutputStream) {
        templates.forEach {
            it.execute()
            it.toWorkBook(workbook)
        }
        workbook.write(out)
        workbook.close()
        out.flush()
        out.close()
    }
}