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

Я пытаюсь записать данные в существующий файл 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 Ответ

0 голосов
/ 24 января 2019

Как предлагает Стефан Лоран , пакет 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)
...