@@ -58,6 +58,7 @@ public class Excel : SupportedDataFrameFormat {
5858internal class DefaultReadExcelMethod (path : String? ) : AbstractDefaultReadMethod(path, MethodArguments .EMPTY , readExcel)
5959
6060private const val readExcel = " readExcel"
61+ private const val readExcelTempFolderPrefix = " dataframe-excel"
6162
6263/* *
6364 * To prevent [Issue #402](https://github.com/Kotlin/dataframe/issues/402):
@@ -66,8 +67,14 @@ private const val readExcel = "readExcel"
6667 * cause permission issues for multiple users.
6768 */
6869private 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+ }
7178 TempFile .setTempFileCreationStrategy(
7279 DefaultTempFileCreationStrategy (tempDir)
7380 )
@@ -226,7 +233,8 @@ public fun DataFrame.Companion.readExcel(
226233 }
227234
228235 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
230238
231239 val values: List <Any ?> = valueRowsRange.map {
232240 val row: Row ? = sheet.getRow(it)
@@ -245,10 +253,17 @@ public fun DataFrame.Companion.readExcel(
245253 *
246254 * TODO: https://github.com/Kotlin/dataframe/issues/387
247255 */
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 {
249261 return when (nameRepairStrategy) {
250262 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+
252267 NameRepairStrategy .MAKE_UNIQUE -> if (nameFromCell.isEmpty()) { // probably it's never empty because of filling empty column names earlier
253268 val emptyName = " Unknown column"
254269 if (columnNameCounters.contains(emptyName)) " ${emptyName}${columnNameCounters[emptyName]} "
0 commit comments