Ячейки формата openxlsx как числа с запятой и десятичными знаками

Как можно создать файл Excel с помощью openxlsx, где форматирование чисел включает в себя как разделители тысяч запятых, так и 2 десятичных знака? Я пробовал приведенный ниже код, но с форматированием не повезло.

# Create Customer Dataset
cust <- data.table(Customer = c("Sue", "Ben", "Jason", "Cody"), Sales = 
c(5654.3456, 29384.4, 729, .4093))

# Start Workbook
wb <- createWorkbook()

# Set Sheet Name
sheet = "Customers Report"

# Initiate worksheet within workbook
addWorksheet(wb = wb, sheet = sheet)

# Add Formatting to Spreadsheet
addStyle(wb = wb, sheet = sheet, style = createStyle(numFmt = "NUMBER"), rows = 2:6, cols = 2)
addStyle(wb = wb, sheet = sheet, style = createStyle(numFmt = "COMMA"), rows = 2:6, cols = 2, stack = TRUE)

# Write Customer Dataset to Spreadsheet
writeData(wb = wb, sheet = sheet, x = cust, headerStyle = 
createStyle(textDecoration = "bold"))

# Write Workbook to File
saveWorkbook(wb = wb, file = "~/Desktop/Customer_Report.xlsx", overwrite = TRUE)

person Jason    schedule 12.04.2018    source источник


Ответы (2)


Вы можете установить форматирование по умолчанию для двух десятичных регистров до добавления формата тысяч.

    wb      = createWorkbook()
    options("openxlsx.numFmt" = "0.00") # 2 decimal cases formating
    styleT <- createStyle(numFmt = "#,##0.00") # create thousands format
    addStyle(wb, sheetName, styleT,
             rows = 'yourrows',cols = 'yourcols',
             gridExpand = T, stack = T) # add thousands format to designated cols and rows

Это гарантирует, что форматирование тысяч будет происходить для значения, которое уже имеет только 2 десятичных регистра.

person Felipe Alvarenga    schedule 12.04.2018
comment
Вы меня опередили на пару секунд, поэтому я не буду публиковать свой ответ. Джейсон, взгляните на: cran.r-project. org / web / packages / openxlsx / vignettes / - person JeanVuda; 12.04.2018
comment
Вы оба опередили меня в моем ответе! Блин, вы все быстрые! Спасибо за ответы! - person Jason; 12.04.2018

Я нашел ответ, когда писал вопрос, но решил, что отправлю его, если у кого-то еще возникнет такой же вопрос в будущем. Я нашел этот ответ через проблему openxlsx № 75 на github. См. Приведенный ниже блок кода:

# Add Formatting to Spreadsheet
addStyle(wb = wb, sheet = sheet, style = createStyle(numFmt = "#,##0.00"), rows = 2:6, cols = 2)

Я обнаружил, что вы используете «0», когда хотите, чтобы там была цифра, независимо от того, равна ли она 0, и что вы используете «#» для обозначения заполнителя для потенциальной цифры. Например, если число .4093, как показано выше, то оно будет отформатировано до 0,41, а если число - 29384,4, как показано выше, то оно будет отформатировано до 29 384,40.

person Jason    schedule 12.04.2018