在 R 中创建 xlsx sheet - 字体颜色不起作用
Creating an xlsx sheet in R - font colour not working
我正在开展一个项目,我需要自动生成来自特定类型 data-frame 的数据电子表格。我已经阅读了有关如何执行此操作的有用解释 here,并基于此解释,我使用 xlsx
包在 R.Studio
(专业版 1.1.383)中创建了一些代码( 0.5.7 版)。我的代码从现有数据框 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");
此代码成功生成了我想要的电子表格,一切看起来都是我想要的,除了 标题以白色字体显示,这意味着它们看不到在电子表格的白色背景上。在我看来,这与我指定 Font
和 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
$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
$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 颜色规范(例如,"red"、"purple"、“#F372B6”)也在 Font
输出对象中正确编码,并且颜色在电子表格输出中按预期呈现。
我知道你想要 100% 的黑色,但如果你能接受 99.6% 的黑色,这个解决方法应该可以完成工作。
我遇到了同样的问题并使用 color = "000000" 而不是 color = "#000000" 解决了问题。
但是,正如eipi10所说,其他颜色适用于“#”编码。
我正在开展一个项目,我需要自动生成来自特定类型 data-frame 的数据电子表格。我已经阅读了有关如何执行此操作的有用解释 here,并基于此解释,我使用 xlsx
包在 R.Studio
(专业版 1.1.383)中创建了一些代码( 0.5.7 版)。我的代码从现有数据框 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");
此代码成功生成了我想要的电子表格,一切看起来都是我想要的,除了 标题以白色字体显示,这意味着它们看不到在电子表格的白色背景上。在我看来,这与我指定 Font
和 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
$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
$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 颜色规范(例如,"red"、"purple"、“#F372B6”)也在 Font
输出对象中正确编码,并且颜色在电子表格输出中按预期呈现。
我知道你想要 100% 的黑色,但如果你能接受 99.6% 的黑色,这个解决方法应该可以完成工作。
我遇到了同样的问题并使用 color = "000000" 而不是 color = "#000000" 解决了问题。
但是,正如eipi10所说,其他颜色适用于“#”编码。