Как выровнять ячейки файла XLSX, используя пакет R xlsx? - PullRequest
0 голосов
/ 25 апреля 2018

При создании файла XLSX с использованием пакета xlsx R по умолчанию столбцы со строками по умолчанию выравниваются влево, а столбцы с целыми числами - вправо (столбцы со смесью целых чисел и строк также оставил). В конечном счете, я хочу стандартизировать все столбцы, выровняв их по левому краю, но у меня возникают проблемы с использованием xlsx. Используя приведенный ниже пример, как я могу выровнять все ячейки по левому краю?

library(xlsx)

# Creating dataframe.
df <- data.frame(c(1, 2, 3),
                 c("one", "two", "three"),
                 c("1", "2", "3"))

# Creating a workbook using the XLSX package.
wb <- xlsx::createWorkbook(type = "xlsx")

# Creating a sheet inside the workbook.
sheet <- xlsx::createSheet(wb, sheetName = "Sheet0")

# Adding the full dataset into the sheet.
xlsx::addDataFrame(df, sheet, startRow = 1, startCol = 1, row.names = FALSE, col.names = FALSE)

# Saving the workbook.
xlsx::saveWorkbook(wb, "df.xlsx")

1 Ответ

0 голосов
/ 26 апреля 2018

Я решил вышеуказанный вопрос с помощью решения, показанного ниже:

library(xlsx)

# Creating dataframe.
df <- data.frame(c(1, 2, 3),
                 c("one", "two", "three"),
                 c("1", "2", "3"))

# Creating a workbook using the XLSX package.
wb <- xlsx::createWorkbook(type = "xlsx")

# Creating a sheet inside the workbook.
sheet <- xlsx::createSheet(wb, sheetName = "Sheet0")

# Adding the full dataset into the sheet.
xlsx::addDataFrame(df, sheet, startRow = 1, startCol = 1, row.names = FALSE, col.names = FALSE)

# Creating cell style needed to left-justify text.
cs <- CellStyle(wb) + Alignment(horizontal = "ALIGN_LEFT")

# Selecting rows to apply cell style to.
all.rows <- getRows(sheet, rowIndex = 1:nrow(df))

# Selecting cells within selected rows to apply cell style to.
all.cells <- getCells(all.rows)

# Applying cell style to selected cells.
invisible(lapply(all.cells, setCellStyle, cs))

# Saving the workbook.
xlsx::saveWorkbook(wb, "df.xlsx")

Решение заключалось в создании стиля ячейки, который я сохранил в cs.Затем я выделил каждую строку и каждую ячейку, в которой находился, и применил к ним стиль ячейки, используя lapply().

...