R / openxlsx / Нахождение первой непустой ячейки в файле Excel

Я пытаюсь записать данные в существующий файл Excel из R, сохраняя при этом форматирование. Я могу сделать это, следуя ответу на этот вопрос ( запись из R в шаблон в Excel при сохранении форматирования), за исключением того, что мой файл содержит пустые столбцы в начале, и поэтому я не могу просто начать записывать данные в ячейку A1.

В качестве решения я надеялся найти первую непустую ячейку, а затем начать писать оттуда. Если я бегу read.xlsx(file="myfile.xlsx") с использованием openxlsx пакет, пустые столбцы и строки автоматически удаляются, и остаются только данные, так что это не работает для меня.

Поэтому я подумал, что сначала загрузит лист, используя wb <- loadWorkbook("file.xlsx") так что у меня есть доступ к getStyles(wb) (который работает). Однако последующая команда getTables возвращается character(0), а также wb$tables возвращается NULL, Я не могу понять, почему это? Прав ли я в том, что эти переменные скажут мне первую непустую ячейку?

Я попытался вручную удалить пустые столбцы и строки, предшествующие данным, прямо в файле Excel, но это ничего не меняет. Я на правильном пути здесь или есть другое решение?

1 ответ

Решение

По предложению Stéphane Laurent, пакет tidyxl предлагает идеальное решение здесь.

Например, теперь я могу искать в файле Excel значение символа, например имена интересующих меня переменных ("Элемент", "Оценка" и "Среднее", которые соответствуют names() из data.frame Я хочу написать в мой файл Excel):

require(tidyxl)
colnames <- c("Item","Score","Mean")
excelfile <- "FormattedSheet.xlsx"
x <- xlsx_cells(excelfile)

  # Find all cells with character values: return their address (i.e., Cell) and character (i.e., Value)
  chars <- x[x$data_type == "character", c("address", "character")]

  starting.positions <- unlist(
    chars[which(chars$character %in% colnames), "address"]
  )
     # returns: c(C6, D6, E6)
Другие вопросы по тегам