R NoSuchMethodError (Java) при записи в рабочий лист MS Excel с помощью XLConnect

У меня есть предварительно отформатированная книга Microsoft Excel, которую я использую в качестве шаблона. Затем я хочу вставить свою таблицу данных в книгу из R, оставив заголовки столбцов и форматирование нетронутыми.

Это должно быть возможно с пакетом XLConnect:

# Load library    
library(XLConnect)

# Load pre-formatted MS Excel workbook
wb <- loadWorkbook("Myworkbook.xlsx")

# Write data.table to existing worksheet excluding column names:    
writeWorksheet(wb, mydt, sheet = "Datasheet1", startRow = 3, startCol = 1, header = FALSE)

# Save the data to the workbook    
saveWorkbook(wb)

Однако, когда я запускаю это, я получаю следующую ошибку Java:

Error: NoSuchMethodError (Java): org.apache.poi.ss.usermodel.Cell.setCellType(Lorg/apache/poi/ss/usermodel/CellType;)V

Я использую R версии 3.4.0 с RStudio версии 1.0.143 с XLConnect_0.2-13 и rJava_0.9-8, версия Java — Java 8 Update 66 (64-разрядная версия) в ОС Windows 7 с Microsoft Office 2010.

Любые идеи о том, почему это может не работать, будут высоко оценены - я могу создавать рабочие книги и рабочие листы с нуля, поэтому кажется, что это влияет только на добавление данных к существующим рабочим листам.


person Amy M    schedule 28.06.2017    source источник
comment
Понятия не имею, но если вам надоели ошибки Java, вы можете попробовать openxlsx, который не используй это.   -  person alistaire    schedule 28.06.2017
comment
Спасибо - попробую, я полностью за то, чтобы отказаться от java-зависимых решений, поскольку они всегда вызывают проблемы.   -  person Amy M    schedule 28.06.2017
comment
openxlsx работал прекрасно - оставлю этот вопрос открытым, чтобы узнать, знает ли кто-нибудь об ошибке java, но переключается на openxlsx для моего рабочего процесса   -  person Amy M    schedule 28.06.2017


Ответы (1)


У меня также была такая же проблема, и я обнаружил, что в версии 0.2-13 XLConnect произошел переход на Apache POI 3.16.

Точно так же элементы Apache Commons были добавлены в его зависимый пакет XLConnectJars — именно в этом, я думаю, может заключаться проблема, поскольку здесь могло быть некоторое устаревание функций.

Эта проблема поднималась, но не обсуждалась на странице XLConnect GitHub.

РЕДАКТИРОВАТЬ: теперь эта проблема объяснена на странице XLConnect GitHub. Короче говоря, последняя версия XLConnect не может работать с пакетом xlsx, поскольку они используют разные версии Apache POI. Пост можно найти здесь. Пока в xlsx не будут внесены обновления, приведенное ниже решение по-прежнему можно быстро исправить.

Поскольку у меня уже был рабочий код, написанный в XLConnect, и из-за нехватки времени я переписывал сценарии в openxlsx, я обнаружил, что переход на XLConnect/XLConnectJars версии 0.2-12 устраняет эту проблему.

Самый быстрый способ сделать это — удалить XLConnect и XLConnectJars, а затем запустить следующее:

#Assuming devtools is already installed
library(devtools)

install_version("XLConnectJars", version = "0.2-12", repos = "http://cran.us.r-project.org") 
install_version("XLConnect", version = "0.2-12", repos = "http://cran.us.r-project.org")`
person Eldqvist    schedule 21.07.2017