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 BaseExcel(val dataSource: DataSource) {
|
|
abstract val templates: List<BaseTemplate>
|
|
abstract val fileName: String
|
|
// excel文档
|
private var workbook = HSSFWorkbook()
|
|
fun getReportName(): String = "${dataSource.areaName()}-${fileName}.xlsx"
|
|
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()
|
}
|
}
|