Вот пример использования openxlsx
. То, что вы ищете, это аргументы halign;valign
в методе createStyle
.
library(openxlsx)
wb <- createWorkbook()
wb$addWorksheet('test')
wb$writeData(sheet = 'test',
df = cbind.data.frame(matrix(1:9,3,3), let=letters[1:3]),
colClasses = c(rep('integer',3),'character'), keepNA = TRUE,
colNames = TRUE, startRow = 1L, startCol = 1L)
wb$addStyle(sheet = 1, rows = 1:4, cols = 4L,
style = createStyle(halign = 'right')) # set halign='right' - leave every other element to default value
saveWorkbook(wb,'d:/Test/test_wb.xlsx') # last column is right-aligned
Вы также можете просто сделать что-то в форме
addStyle(wb = wb, sheet = 'test', cols = 4L, rows = 1:4,
style = createStyle(halign = 'right'))
Редактировать
Выбор строк / столбцов: я обычно работаю с df
(фрейм данных рассматриваемого листа) и четко определяю, где я хочу применить форматирование
# Ex. 1: all rows, column 4
addStyle(wb = wb, sheet = 'test', cols = 4L, rows = 1:nrow(df),
style = createStyle(halign = 'right'))
# Ex. 2: all rows, all columns
addStyle(wb = wb, sheet = 'test', cols = 1:ncol(df), rows = 1:nrow(df),
gridExpand = TRUE, # make sure to set this to TRUE in order to really select everything
style = createStyle(halign = 'right'))
Тогда вы можете так же легко выбрать группы строк или столбцов, например, rows = c(1,3)
(вы также можете просто установить максимальное количество столбцов и строк, но я думаю, что применение форматирования к каждой отдельной ячейке не очень эффективно).
Кроме того, если ваши данные начинаются не с строки / столбца с номером 1, а с n, то вам необходимо сместить выбор, например, rows = n:(nrow(df)+n-1)
(возможно, потребуется удалить -1
- не уверен. Я всегда ошибаюсь здесь).