我正在使用RMarkdown和Shiny生成一个报告模板(单词格式),其中包含许多表格,其中包含单元格内容中的复选框。我使用了" flextable"用于创建表的包。但是,我无法在表格中插入复选框。关于如何做到这一点的任何想法?例如,我应该如何制作"复选框"实际上在决赛桌中显示一个复选框?
x <- structure(list(col1 = c("test1", rep("1", 4), checkbox), col2 = c("test2", rep("", 5)), col3 = c("test3", rep("", 5)), col4 = c("test4", rep("", 5))), .Names = c("col1", "col2", "col3", "col4"), class = c("data.frame"), row.names = c(NA, 6L))
MyFTable <- flextable(x, col_keys = c("col1", "col2", "col3", "col4"))
我试图设置
checkbox <- '<label><input type = "checkbox"> </label>'
但它没有用。
为了更清晰,请参阅以下图片。基本上,我想要这样的东西,模板的用户可以检查某个项目前面的复选框。例如,有两个项目&#34;足够&#34;和&#34;不足&#34;在&#34;配方&#34;右侧的细胞内容中。如果报告的用户决定&#34;充足&#34;是正确的,他只需点击&#34;充足&#34;前面的复选框。 An image of the desired format of the checkbox
答案 0 :(得分:0)
一种可行的解决方案是使用Wingdings字体显示符号(当字体为Wingdings时,o为正方形)
library(officer)
library(magrittr)
library(flextable)
doc <- read_docx()
d <- data.frame(checkbox = "o", stringsAsFactors = FALSE) %>%
flextable() %>%
font(fontname = "Wingdings")
doc <- body_add_flextable(doc, d)
print(doc, "test.docx")
似乎在Word中存在真正的复选框,但只能在某些Word版本中使用(不是我的)!
答案 1 :(得分:0)
旧问题,但是由于我遇到类似问题,我将分享解决方案。诀窍是使用官库中的slip_in_xml函数。
library(officer)
library(magrittr)
my_doc <- read_docx()
my_doc <- my_doc %>%
body_add_par('Heading 1', style = "heading 1") %>%
body_add_par(" ", style = "Normal") %>% # blank paragraph
slip_in_xml(paste0('<w:sdt>
<w:sdtPr>
<w:id w:val="-990252438"/>
<w14:checkbox>
<w14:checked w14:val="0"/>
<w14:checkedState w14:val="2612" w14:font="MS Gothic"/>
<w14:uncheckedState w14:val="2610" w14:font="MS Gothic"/>
</w14:checkbox>
</w:sdtPr>
<w:sdtContent>
<w:r>
<w:rPr>
<w:rFonts w:ascii="MS Gothic" w:eastAsia="MS Gothic" w:hAnsi="MS Gothic" w:hint="eastAsia"/>
</w:rPr>
<w:t>☐</w:t>
</w:r>
</w:sdtContent>
</w:sdt>'), pos = 'after') %>%
slip_in_text("pass", style = "strong") %>%
slip_in_xml(paste0('<w:sdt>
<w:sdtPr>
<w:id w:val="-990252438"/>
<w14:checkbox>
<w14:checked w14:val="0"/>
<w14:checkedState w14:val="2612" w14:font="MS Gothic"/>
<w14:uncheckedState w14:val="2610" w14:font="MS Gothic"/>
</w14:checkbox>
</w:sdtPr>
<w:sdtContent>
<w:r>
<w:rPr>
<w:rFonts w:ascii="MS Gothic" w:eastAsia="MS Gothic" w:hAnsi="MS Gothic" w:hint="eastAsia"/>
</w:rPr>
<w:t>☐</w:t>
</w:r>
</w:sdtContent>
</w:sdt>'), pos = 'after') %>%
slip_in_text("fail", style = "strong") %>%
body_add_par(" ", style = "Normal") %>% # blank paragraph
slip_in_text("comment", style = "strong")
print(my_doc, target = "MVP.docx")
要获取xml代码,您只需创建一个word文件,将其解压缩并提取所需的xml。两个对我有帮助的链接:An Informal Introduction to DOCX和docxtemplater: Can we check-uncheck checkboxes from word document template. #270