我正在开发一个项目,需要从特定类型的数据框架自动生成数据电子表格。我在这里阅读了有关如何执行此操作的有用解释,并基于此解释,我R.Studio使用包(版本 0.5.7)在(专业版本 1.1.383)中创建了一些代码xlsx。我的代码从现有数据框架生成数据电子表格TABLE。这是我正在使用的代码,其中使用模拟数据框来创建可重现的示例:
#In this code we create a mock data frame called TABLE
#In practice we have a larger data frame with data that is not reproduced here
TABLE <- data.frame(Var1 = c(1, 6, 3, 9, 10, 4, 3, 5, 2, 2),
Var2 = c(18.1, 14.2, 12.0, 21.3, 33.4, 16.0, 15.4, 8.6, 6.7, 12.9),
Var3 = c(0, 1, 1, 0, 1, 1, 0, 0, 0, 0));
#Create workbook, sheet, columns and styles
WB <- createWorkbook(type = "xlsx");
SHEET <- createSheet(WB, sheetName = "My Data");
rows <- createRow(SHEET, rowIndex = 1:5);
cells <- createCell(rows, colIndex = 1:(1+ncol(TABLE)));
STYLE_TITLE <- CellStyle(WB) +
Font(WB, name = "Calibri", heightInPoints = 16,
color = "black", isBold = TRUE, isItalic = FALSE);
#Add data from data frame TABLE
addDataFrame(TABLE, SHEET, startRow = 4L, startColumn = 2L,
colnamesStyle = STYLE_COLNAMES, row.names = FALSE);
#Add title
setCellValue(cells[[2, 2]], "This is my spreadsheet title");
setCellStyle(cells[[2, 2]], STYLE_TITLE);
#Save workbook
saveWorkbook(WB, "My Pretty Workbook.xlsx");
Run Code Online (Sandbox Code Playgroud)
这段代码成功生成了我想要的电子表格,一切看起来都是我想要的,除了标题以白色字体出现,这意味着它们在电子表格的白色背景上看不到。Font在我看来,这与我指定with的代码部分相反color = "black"。我也尝试过使用color = "#000000",这得到了相同的结果。
为什么我的标题和信息文本以白色字体显示?我该如何解决?
STYLE_TITLE如果您在控制台中键入,您可以在输出中看到(在 下查看$font$ref),颜色被设置为FFFFFF,即白色。下面是我在控制台中看到的内容(我仅显示了输出的相关部分)。注意FFFFFF最后一行:
STYLE_TITLE <- STYLE_TITLE <- CellStyle(WB) +
Font(WB, name = "Calibri", heightInPoints = 16,
color = "black", isBold = TRUE, isItalic = FALSE)
STYLE_TITLE
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)$font $ref [1] "Java-Object{<xml-fragment xmlns:main=\"http://schemas.openxmlformats.org /spreadsheetml/2006/main\">\n <main:name val=\"Calibri\"/>\n <main:sz val=\"16.0 \"/>\n <main:color rgb=\"FFFFFF\"/>\n <main:b val=\"true\"/>\n</xml-fragment>}"
我不知道为什么会发生这种情况,也不知道如何获得Font将“black”或“#000000”转换为正确的颜色代码的函数000000。然而,我确实(奇怪地)发现其他颜色编码可以正常工作。例如,您可以使用"#010101"接近黑色的颜色:
STYLE_TITLE <- STYLE_TITLE <- CellStyle(WB) +
Font(WB, name = "Calibri", heightInPoints = 16,
color = "#010101", isBold = TRUE, isItalic = FALSE)
STYLE_TITLE
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)$font $ref [1] "Java-Object{<xml-fragment xmlns:main=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">\n <main:name val=\"Calibri\"/>\n <main:sz val=\"16.0\"/>\n <main:color rgb=\"010101\"/>\n <main:b val=\"true\"/>\n</xml-fragment>}"
此颜色名称和其他颜色名称以及 RGB 颜色规范(例如,“红色”、“紫色”、“#F372B6”)也在输出对象中正确编码Font,并且颜色按照电子表格输出中的预期呈现。
我知道您想要 100% 黑色,但如果您可以满足于 99.6% 黑色,则此解决方法应该可以完成工作。
| 归档时间: |
|
| 查看次数: |
1670 次 |
| 最近记录: |