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)