如何使用R向Word文档插入外部RTF表格

vyswwuz2  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(169)

我有一堆现有的RTF表,并希望将它们添加到.docx文件时,使用R包“ReporteRs”.但它不支持外部RTF表尚未.所以我试图插入文件路径到.docx文件并切换链接以获取表.要做到这一点,我需要在文件路径周围添加一对大括号“{}”。但只需添加符号“{}”在文件路径周围,将不会完成工作,因为大括号将被翻译成word中的一些RTF代码,而“{}”的后台RTF代码实际上是相当复杂的。我的问题是:
(1)如何在rtf文件路径周围添加可解析的大括号“{}”,以便我可以切换链接。我试图使用我找到的rtf代码来替换大括号,但无法通过Microsoft WORD编译为大括号。我找到的rtf代码是这样的:
{\field{*\fldinst {\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid8593807 \hich\af31502\dbch\af31501\loch\f31502 \hich\af31502\dbch\af31501\loch\f31502 INCLUDETEXT“\\\ my file pth\d0blchar.rtf”\c MSRTF\hich\af31502\dbch\af31501\loch\f31502 }}
我希望这个问题可以通过WORD来解决,比如:{INCLUDETEXT“\ my file pth\d0blchar.rtf”\c MSRTF }
但在我看来,WORD不能做编译。
(2)如果(1)不可行,是否有其他R软件包,可以包括RTF表到一个WORD文件时,创建一个WORD文件的R?

附上我的示例代码:

library(ReporteRs)
path<-'\\\\\\\\mypath\\data\\table1.rtf' #path for the related TLFS
report<-docx()                           #initialize the docx object

text1<-"{\\field{\\*\\fldinst {\\rtlch\\fcs1 \\af31503 \\ltrch\\fcs0 \\insrsid8593807 \\hich\\af31502\\dbch\\af31501\\loch\\f31502  \\hich\\af31502\\dbch\\af31501\\loch\\f31502  "
text2<-"\\hich\\af31502\\dbch\\af31501\\loch\\f31502  }}"

fileAdd<-paste0(text1,"INCLUDETEXT \"", path, "\" \\c MSRTF", text2)
report<-addParagraph(report,fileAdd) #add rtf tables
writeDoc(report, file="Report.docx") #output the docx file

============================================
多谢了!

falq053o

falq053o1#

我已经能够用下面的代码将一个表从RTF文档复制到Word文档:

library(RDCOMClient)

wordApp <- COMCreate("Word.Application")
wordApp[["Visible"]] <- TRUE
wordApp[["DisplayAlerts"]] <- FALSE
path_To_RTF_File <- "D:\\Doc_Table_RTF.rtf"
path_To_Word_File <- "D:\\empty_Word.docx"

doc_RTF <- wordApp[["Documents"]]$Open(normalizePath(path_To_RTF_File), ConfirmConversions = FALSE)

doc <- wordApp[["ActiveDocument"]]
tbl <- doc$Tables(1)

doc_Word_File <- wordApp[["Documents"]]$Open(normalizePath(path_To_Word_File), ConfirmConversions = FALSE)

rngTableTarget <- doc_Word_File$content()
rngTableTarget$Collapse(0)
rngTableTarget[["FormattedText"]] <- tbl$Range()$FormattedText()

相关问题