вставьте флажок в содержимое ячейки гибкого объекта для слова с rmarkdown - PullRequest
0 голосов
/ 13 июня 2018

Я использую 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>'

, но это не сработало.

Для большей ясности смотрите следующие рисунки.По сути, я хочу что-то вроде этого, и пользователи шаблона могут установить флажок перед определенным элементом.Например, есть два элемента «Адекватный» и «Неадекватный» в содержимом ячейки с правой стороны «Формулировка».Если пользователь отчета решает, что «Адекватный» является правильным, он может просто установить флажок перед «Адекватным». Изображение нужного формата флажка

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Старый вопрос, но, поскольку у меня была похожая проблема, я поделюсь решением.Хитрость заключается в том, чтобы использовать функцию 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, вы можете просто создать файл слова, распаковать его и извлечь необходимый файл XML.Две ссылки, которые мне помогли: Неформальное введение в DOCX и docxtemplater: Можем ли мы снять или снять флажки в шаблоне документа Word.# 270

0 голосов
/ 19 июня 2018

Одним из возможных решений является использование шрифта Wingdings для отображения символов (o является квадратом, если шрифт Wingdings)

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версия (не моя)!

...