Хорошо, наконец, я думаю, что нашел способ избежать XLS преобразования строк типа "12E123" в научный double, который не требует взаимодействия с Excel, используя XLConnect
nb <- data.frame(as.character('92343E102'), stringsAsFactors = F)
WriteXLS::WriteXLS(nb, "testdf.xls")
readxl::read_xls("testdf.xls")
wb <- XLConnect::loadWorkbook("testdf.xls")
XLConnect::createSheet(wb, name="newsheet")
XLConnect::writeWorksheet(wb, nb, sheet = "newsheet")
XLConnect::saveWorkbook(wb)
readxl::read_xls("testdf.xls", sheet=1) #converted string to wrong number
readxl::read_xls("testdf.xls", sheet=2) # success! string stays string
результат:
> readxl::read_xls("testdf.xls", sheet=1)
# A tibble: 1 x 1
as.character..92343E102..
<dbl>
1 9.23e106
> readxl::read_xls("testdf.xls", sheet=2)
# A tibble: 1 x 1
as.character..92343E102..
<chr>
1 92343E102
Конечно, поскольку у меня только 32-битная JAVA на работе, мне, возможно, придется переключиться на R32 для этого или написать подпрограммы 32bit-R для правильного сохранения моих файлов XLS ..
Одна вещь за один раз ... Надеюсь, это кому-нибудь поможет