вставьте внешний docx используя pakage «офицер» - PullRequest
0 голосов
/ 27 июня 2018

Почему не работает метод body_add_docx в пакете "офицер"? Где я ошибся?

library(officer)
library(magrittr)

read_docx(path = "/home/user/page1.docx") %>% # load page1.docx as base document
  body_add_break() %>% # add page break
  body_add_docx(src="/home/user/page2.docx") %>% #FIXME: This method doesn't work
  print(target = "/home/user/out.docx") # out.docx conteins only page1.docx !?

Ответы [ 2 ]

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

Функция body_add_docx использует функцию MS Word. Когда документ редактируется, содержимое файла копируется в основной документ, но это происходит только тогда, когда документ редактируется Word. Возможно, в LibreOffice и gdoc эта функция не реализована (по крайней мере, я о них не знаю).

Сценарий ниже создает ожидаемый документ только при редактировании с помощью Word:

library(officer)
library(magrittr)

read_docx() %>% 
  body_add_par("hello world 1", style = "Normal") %>% 
  print(target = "doc1.docx")
read_docx() %>% 
  body_add_par("hello world 2", style = "Normal") %>% 
  print(target = "doc2.docx")


read_docx(path = "doc1.docx") %>%
  body_add_break() %>% 
  body_add_docx(src="doc2.docx") %>%
  print(target = "out.docx") 

enter image description here

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

Код ниже работает только для Windows, MS Word и только без разрыва страницы.

Для Linux, LibreOffice, Google документ не работает.

library(officer)
library(magrittr)

read_docx(path = "/home/user/page1.docx") %>%
  # body_add_break() %>% # with page break it doesn't work
  body_add_docx(src="/home/user/page2.docx") %>% # only for Widows and MS Word
  print(target = "/home/user/out.docx") 
...