openxlsx:: loadWorkbook / saveWorkbook выдает ошибки и портит форматирование листов

#r #openxlsx

Вопрос:

При попытке загрузить файл xlsx в R, используя openxlsx::loadWorkbook

 ExcelFile <- loadWorkbook(ReportFilePath) #ReportFilePath is a character variable containing path to the file
 

R возвращает предупреждение:

 In sprintf("<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink" Target="externalLinks/externalLink1.xml"/>",  :one argument not used by format '<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink" Target="externalLinks/externalLink1.xml"/>'
 

Файл содержит несколько листов с большим количеством форматирования, скрытых диапазонов, формул и т.д. Это довольно сложный файл xlsx. Файл не содержит никаких подключений к внешним данным, но в нем есть панель навигации с гиперссылками на листы внутри документа.

После сохранения рабочей книги:

 saveWorkbook(ExcelFile, ReportFilePath, overwrite = TRUE)
 

Я вижу, что большая часть форматирования текста удалена, диапазоны, которые были скрыты, теперь не показаны, и наоборот. Кроме того, R возвращает предупреждающее сообщение:

 Warning messages:
1: In .self$setColWidths(i) : NAs introduced by coercion
2: In .self$setColWidths(i) : NAs introduced by coercion
3: In .self$setColWidths(i) : NAs introduced by coercion
4: In .self$setColWidths(i) : NAs introduced by coercion
5: In .self$setColWidths(i) : NAs introduced by coercion
6: In .self$setColWidths(i) : NAs introduced by coercion
 

Я просмотрел документацию пакета openxlsx и поискал в Google предупреждение, но, похоже, для этого нет очевидного решения. Что я могу сделать, чтобы убедиться, что книга успешно загружена и сохранена? Каковы основные причины этих предупреждений?

Комментарии:

1. Вы используете самую последнюю версию openxlsx? Если обновление не устраняет проблему, вы можете попробовать загрузить версии книги на одном листе, чтобы изолировать лист, вызывающий проблемы.

2. @BluVoxe Я проверил, и я использую последнюю версию пакета. Я также проверил, как будет работать удаление листов, чтобы определить, какой лист является проблемой, но даже когда я удалил все существующие листы и создал новый с некоторыми случайными данными, без форматирования, проблема все еще сохраняется. Когда я воссоздал то же самое в совершенно новом файле, проблем с загрузкой книги не возникло. Очень странно.

3. Интересный… В этом случае я лучше всего предполагаю, что это как-то связано со временем создания вашей исходной книги, возможно, Excel использовал какое-то другое форматирование, которое openxlsx забыл учесть. К сожалению, я обнаружил, что с openxlsx часто приходится устранять неполадки, но это очень мощно, если вы можете заставить его работать. Не видя вашей реальной рабочей тетради, я не думаю, что смогу предложить еще какую-либо помощь, хотя, извините!

4. Я понял, что там, где некоторые соединения (Excel -> Данные ->> Соединения) с файлами, которых больше не существовало (и листы с этими соединениями были удалены некоторое время назад, но они все еще появлялись в списке соединений), и после удаления этих соединений R, по крайней мере, не выдает ошибок, но все равно сбрасывает форматирование и скрывает диапазоны.