我正在使用 httr 包通过其 REST API 从我们的报告系统检索数据。我将内容指定为 xlsx。响应包含原始(二进制?)文件。
我的请求如下所示:
request = GET("http://server/.../documents/123456",
add_headers(.headers = c('Accept'= 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'authtoken' = paste0('', logonToken,''))) ,
content_type("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
encode = 'raw'
)
content(request)
[1] 50 4b 03 04 0a 00 08 08 08 00 19 88 79 54 00 00 00 00 00 00 00
[44] 2f 73 68 65 65 74 31 2e 78 6d 6c a5 57 5b 6f 9b 30 14 7e 9f b4
[87] 00 23 43 2f db af 9f c1 94 d8 c6 58 93 92 87 54 f5 77 f1 39 fe
... etc
Run Code Online (Sandbox Code Playgroud)
结果可以保存为 .xlsx 并在 Excel 中打开。但是,我想将此数据直接读入数据框中。有没有办法将结果模拟为同一脚本中的可读输入?
我可以传递一个额外的参数write_disk来将响应直接保存为文件。需要指定路径。我尝试测试tempfile()直接写入和读取响应,但无法使其正常工作。
有没有办法从 R 环境对象读取原始文件?
是的,这是一个完全可重现的示例网址:
url <- paste0('https://file-examples.com/storage/fe91183158623ded19eb446/',
'2017/02/file_example_XLSX_100.xlsx')
Run Code Online (Sandbox Code Playgroud)
现在下载我们的文件并获取其原始内容:
raw_xlsx <- httr::GET(url)$content
Run Code Online (Sandbox Code Playgroud)
让我们创建一个临时文件来存储它:
tmp <- tempfile(fileext = '.xlsx')
Run Code Online (Sandbox Code Playgroud)
现在将原始数据写入文件:
raw_xlsx <- httr::GET(url)$content
Run Code Online (Sandbox Code Playgroud)
我们的 excel 文件现在保存在临时文件中,我们可以读取该文件,但是您通常会将它们读入 R:
my_excel <- readxl::read_excel(tmp)
Run Code Online (Sandbox Code Playgroud)
结果是:
my_excel
#> # A tibble: 100 x 8
#> `0` `First Name` `Last Name` Gender Country Age Date Id
#> <dbl> <chr> <chr> <chr> <chr> <dbl> <chr> <dbl>
#> 1 1 Dulce Abril Female United States 32 15/10/2017 1562
#> 2 2 Mara Hashimoto Female Great Britain 25 16/08/2016 1582
#> 3 3 Philip Gent Male France 36 21/05/2015 2587
#> 4 4 Kathleen Hanner Female United States 25 15/10/2017 3549
#> 5 5 Nereida Magwood Female United States 58 16/08/2016 2468
#> 6 6 Gaston Brumm Male United States 24 21/05/2015 2554
#> 7 7 Etta Hurn Female Great Britain 56 15/10/2017 3598
#> 8 8 Earlean Melgar Female United States 27 16/08/2016 2456
#> 9 9 Vincenza Weiland Female United States 40 21/05/2015 6548
#> 10 10 Fallon Winward Female Great Britain 28 16/08/2016 5486
#> # ... with 90 more rows
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
806 次 |
| 最近记录: |