Ячейки формата 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)
2 ответа
Вы можете установить форматирование по умолчанию для 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 десятичных знака.
Я нашел ответ, когда писал этот вопрос, но решил, что пойдет дальше и опубликую его, если у кого-то еще возникнет тот же вопрос в будущем. Я нашел этот ответ через github openxlsx # 75. Пожалуйста, смотрите ниже блок кода:
# 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.