Использование mergeCells () в пакете openxlsx R приводит к ошибке в выводе - PullRequest
0 голосов
/ 04 января 2019

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

Я пытался объединить ячейки до и после записи данных на лист. Я также пытался использовать writeDataTable () и writeData (), оба не работали. Я попытался запустить df на разных столбцах (как показано ниже). Например, начните записывать df в столбец 2 и объедините столбцы 1: 2. Другой я сначала слил столбцы 1: 2, затем записал данные, начиная со столбца 1.

df <- data.frame(
Category = c("A", "B", "C"),
Type = c("x", "y", "z"),
Number = c("1", "2", "3"), stringsAsFactors = FALSE)

book <- createWorkbook()
sheet <- "Sheet1"
writeData(book, sheet, df, startCol = 2, startRow = 1, colNames = TRUE)
mergeCells(book, sheet, cols = 1:2, rows = 1)
mergeCells(book, sheet, cols = 1:2, rows = 2)
mergeCells(book, sheet, cols = 1:2, rows = 3)
saveWorkbook(book)

OR

mergeCells(book, sheet, cols = 1:2, rows = 1)
mergeCells(book, sheet, cols = 1:2, rows = 2)
mergeCells(book, sheet, cols = 1:2, rows = 3)    
writeDataTable(book, sheet, df, startCol = 1, startRow = 1, colNames = TRUE)
saveWorkbook(book)

При открытии файла после сохранения возникает ошибка «Мы обнаружили проблему с некоторым содержимым и т. Д. Excel удалось открыть файл, удалив или восстановив нечитаемый контент.»

Любая помощь приветствуется!

1 Ответ

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

Если я правильно понимаю ваш вопрос, вы хотите объединить столбцы 1 и 2, чтобы получить объединенный столбец с первым столбцом df. Если это правильно, то ваша проблема в том, что самый левый столбец, в который вы объединяете (столбец 1), пуст. openxlsx::mergeCells() сохранит содержимое самого левого столбца объединенным. Чтобы объединить столбцы 1 и 2 и получить содержимое df[1], вам нужно записать содержимое df[1] в крайнем левом столбце следующим образом:

library(openxlsx)

df <- data.frame(
  Category = c("A", "B", "C"),
  Type = c("x", "y", "z"),
  Number = c("1", "2", "3"), stringsAsFactors = FALSE)

wb <- createWorkbook() # creates workbook
addWorksheet(wb, "Sheet1") # adds sheet
writeData(wb, 1, df[1], startCol = 1, startRow = 1, colNames = TRUE) # writing content on the left-most column to be merged
writeData(wb, 1, df[2:3], startCol = 3, startRow = 1, colNames = TRUE) # write the rest of the content on the columns that wont be merged
for(i in seq_len(nrow(df) + 1)){ # loop over rows for merging
  mergeCells(wb, 1, cols = 1:2, rows = i)
}
rm(i)
saveWorkbook(wb, "test.xlsx", overwrite = T) # save workbook
...