是否有用于将原始输入转换为 .xlsx 文件的 R 函数?

is there an R function for converting a raw input into an .xlsx file?

所以对于上下文,我正在尝试使用 gpg 包解密 xlsx 文件。如果我解密 as_text = TRUE 我会收到一条错误消息,并在字符串中嵌入 nul。

writexl::write_xlsx(x = data.frame(x = 1:2, y = 1:2),
                    path = "testtemp/test_1/test2.xlsx")

encrypted_xlsx <- gpg::gpg_encrypt(
  data = list.files("testtemp/test_1/",
                    full.names = TRUE,
                    pattern = "xlsx"
  ),
  receiver = "mypublickey"
)

writeLines(
  text = encrypted_xlsx,
  con = "testtemp/test_1/test2.xlsx.gpg"
)

gpg::gpg_import("myprivatekey")
decrypted_file <- gpg::gpg_decrypt(
  data = "testtemp/test_1/test2.xlsx.gpg",
  verify = FALSE,
  as_text = FALSE
)

xl <- readxl::read_xlsx(path = rawConnection(decrypted_file))

我在最后一行中尝试的方法不起作用,但希望传达我正在努力实现的目标。

平台x86_64-w64-mingw32
拱门 x86_64
osmingw32
系统 x86_64, mingw32
状态
专业 4
轻微 0.2
2020 年
06 月
第 22 天
svn 版本 78730
语言 R
version.stringR 版本 4.0.2 (2020-06-22) 昵称再起飞

解决方案是将 gpg:gpg_decrypt 的解密输出写入文件。

filename = tempfile(fileext = '.xlsx') #create temp file with xlsx suffix
writeBin(decrypted_file, filename)     #write data to file

xl <- readxl::read_xlsx(path = filename)

print(xl)

# A tibble: 2 x 2
      x     y
  <dbl> <dbl>
1     1     1
2     2     2

感谢 https://whosebug.com/users/1968/konrad-rudolph 的回答。