@@ -4,23 +4,12 @@ import kotlinx.datetime.toJavaLocalDate
4
4
import kotlinx.datetime.toJavaLocalDateTime
5
5
import kotlinx.datetime.toKotlinLocalDateTime
6
6
import org.apache.poi.hssf.usermodel.HSSFWorkbook
7
- import org.apache.poi.ss.usermodel.Cell
8
- import org.apache.poi.ss.usermodel.CellType
9
- import org.apache.poi.ss.usermodel.DateUtil
10
- import org.apache.poi.ss.usermodel.RichTextString
11
- import org.apache.poi.ss.usermodel.Row
12
- import org.apache.poi.ss.usermodel.Sheet
13
- import org.apache.poi.ss.usermodel.Workbook
14
- import org.apache.poi.ss.usermodel.WorkbookFactory
7
+ import org.apache.poi.ss.usermodel.*
15
8
import org.apache.poi.ss.util.CellReference
16
9
import org.apache.poi.util.LocaleUtil
17
10
import org.apache.poi.util.LocaleUtil.getUserTimeZone
18
11
import org.apache.poi.xssf.usermodel.XSSFWorkbook
19
- import org.jetbrains.kotlinx.dataframe.AnyFrame
20
- import org.jetbrains.kotlinx.dataframe.AnyRow
21
- import org.jetbrains.kotlinx.dataframe.ColumnsSelector
22
- import org.jetbrains.kotlinx.dataframe.DataColumn
23
- import org.jetbrains.kotlinx.dataframe.DataFrame
12
+ import org.jetbrains.kotlinx.dataframe.*
24
13
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
25
14
import org.jetbrains.kotlinx.dataframe.api.forEach
26
15
import org.jetbrains.kotlinx.dataframe.api.select
@@ -32,8 +21,7 @@ import java.io.OutputStream
32
21
import java.net.URL
33
22
import java.time.LocalDate
34
23
import java.time.LocalDateTime
35
- import java.util.Calendar
36
- import java.util.Date
24
+ import java.util.*
37
25
38
26
public class Excel : SupportedFormat {
39
27
override fun readDataFrame (stream : InputStream , header : List <String >): AnyFrame = DataFrame .readExcel(stream)
@@ -216,9 +204,10 @@ public fun <T> DataFrame<T>.writeExcel(
216
204
columnsSelector : ColumnsSelector <T , * > = { all() },
217
205
sheetName : String? = null,
218
206
writeHeader : Boolean = true,
219
- workBookType : WorkBookType = WorkBookType .XLSX
207
+ workBookType : WorkBookType = WorkBookType .XLSX ,
208
+ keepFile : Boolean = false,
220
209
) {
221
- return writeExcel(File (path), columnsSelector, sheetName, writeHeader, workBookType)
210
+ return writeExcel(File (path), columnsSelector, sheetName, writeHeader, workBookType, keepFile )
222
211
}
223
212
224
213
public enum class WorkBookType {
@@ -230,12 +219,23 @@ public fun <T> DataFrame<T>.writeExcel(
230
219
columnsSelector : ColumnsSelector <T , * > = { all() },
231
220
sheetName : String? = null,
232
221
writeHeader : Boolean = true,
233
- workBookType : WorkBookType = WorkBookType .XLSX
222
+ workBookType : WorkBookType = WorkBookType .XLSX ,
223
+ keepFile : Boolean = false,
234
224
) {
235
- val factory = when (workBookType) {
236
- WorkBookType .XLS -> { { HSSFWorkbook () } }
237
- WorkBookType .XLSX -> { { XSSFWorkbook () } }
238
- }
225
+
226
+ val factory =
227
+ if (keepFile){
228
+ when (workBookType) {
229
+ WorkBookType .XLS -> HSSFWorkbook (file.inputStream())
230
+ WorkBookType .XLSX -> XSSFWorkbook (file.inputStream())
231
+ }
232
+ }
233
+ else {
234
+ when (workBookType) {
235
+ WorkBookType .XLS -> HSSFWorkbook ()
236
+ WorkBookType .XLSX -> XSSFWorkbook ()
237
+ }
238
+ }
239
239
return file.outputStream().use {
240
240
writeExcel(it, columnsSelector, sheetName, writeHeader, factory)
241
241
}
@@ -246,9 +246,9 @@ public fun <T> DataFrame<T>.writeExcel(
246
246
columnsSelector : ColumnsSelector <T , * > = { all() },
247
247
sheetName : String? = null,
248
248
writeHeader : Boolean = true,
249
- factory : () -> Workbook
249
+ factory : Workbook
250
250
) {
251
- val wb: Workbook = factory()
251
+ val wb: Workbook = factory
252
252
writeExcel(wb, columnsSelector, sheetName, writeHeader)
253
253
wb.write(outputStream)
254
254
wb.close()
0 commit comments