@@ -58,6 +58,7 @@ public class Excel : SupportedDataFrameFormat {
58
58
internal class DefaultReadExcelMethod (path : String? ) : AbstractDefaultReadMethod(path, MethodArguments .EMPTY , readExcel)
59
59
60
60
private const val readExcel = " readExcel"
61
+ private const val readExcelTempFolderPrefix = " dataframe-excel"
61
62
62
63
/* *
63
64
* To prevent [Issue #402](https://github.com/Kotlin/dataframe/issues/402):
@@ -66,8 +67,14 @@ private const val readExcel = "readExcel"
66
67
* cause permission issues for multiple users.
67
68
*/
68
69
private fun setWorkbookTempDirectory () {
69
- val tempDir = Files .createTempDirectory(" dataframe-excel" ).toFile()
70
- .also { it.deleteOnExit() }
70
+ val tempDir = try {
71
+ Files .createTempDirectory(readExcelTempFolderPrefix)
72
+ .toFile()
73
+ .also { it.deleteOnExit() }
74
+ } catch (e: Exception ) {
75
+ // Ignore, let WorkbookFactory use the default temp directory instead
76
+ return
77
+ }
71
78
TempFile .setTempFileCreationStrategy(
72
79
DefaultTempFileCreationStrategy (tempDir)
73
80
)
@@ -226,7 +233,8 @@ public fun DataFrame.Companion.readExcel(
226
233
}
227
234
228
235
val name = repairNameIfRequired(nameFromCell, columnNameCounters, nameRepairStrategy)
229
- columnNameCounters[nameFromCell] = columnNameCounters.getOrDefault(nameFromCell, 0 ) + 1 // increase the counter for specific column name
236
+ columnNameCounters[nameFromCell] =
237
+ columnNameCounters.getOrDefault(nameFromCell, 0 ) + 1 // increase the counter for specific column name
230
238
231
239
val values: List <Any ?> = valueRowsRange.map {
232
240
val row: Row ? = sheet.getRow(it)
@@ -245,10 +253,17 @@ public fun DataFrame.Companion.readExcel(
245
253
*
246
254
* TODO: https://github.com/Kotlin/dataframe/issues/387
247
255
*/
248
- private fun repairNameIfRequired (nameFromCell : String , columnNameCounters : MutableMap <String , Int >, nameRepairStrategy : NameRepairStrategy ): String {
256
+ private fun repairNameIfRequired (
257
+ nameFromCell : String ,
258
+ columnNameCounters : MutableMap <String , Int >,
259
+ nameRepairStrategy : NameRepairStrategy ,
260
+ ): String {
249
261
return when (nameRepairStrategy) {
250
262
NameRepairStrategy .DO_NOTHING -> nameFromCell
251
- NameRepairStrategy .CHECK_UNIQUE -> if (columnNameCounters.contains(nameFromCell)) throw DuplicateColumnNamesException (columnNameCounters.keys.toList()) else nameFromCell
263
+ NameRepairStrategy .CHECK_UNIQUE -> if (columnNameCounters.contains(nameFromCell)) throw DuplicateColumnNamesException (
264
+ columnNameCounters.keys.toList()
265
+ ) else nameFromCell
266
+
252
267
NameRepairStrategy .MAKE_UNIQUE -> if (nameFromCell.isEmpty()) { // probably it's never empty because of filling empty column names earlier
253
268
val emptyName = " Unknown column"
254
269
if (columnNameCounters.contains(emptyName)) " ${emptyName}${columnNameCounters[emptyName]} "
0 commit comments