为啥 response.body 不能用 xlsx 格式读取

Posted

技术标签:

【中文标题】为啥 response.body 不能用 xlsx 格式读取【英文标题】:Why response.body not readable with xlsx format为什么 response.body 不能用 xlsx 格式读取 【发布时间】:2022-01-17 13:48:55 【问题描述】:

我想用 xlsx 文件为我们的导出文件添加 RSpec 测试,但是在获得 xlsx 格式的端点索引后,我的 response.body 不可读,我无法检查文件内容

rspec:

it 'returns a successful 200 response for xlsx format' do
  get :index, format: :json

  expect(response).to be_successful
  expect(response.headers['Content-Type']).to eq('my_value'; charset=utf-8')
  expect(response.request.fullpath).to eq('end_poing_path.xlsx')
end

但是当我想检查response.body时,我得到了下面的图片

【问题讨论】:

另外,我在父上下文中添加了render_views 那么你的问题是如何写一个expect语句来验证响应? 不,我想做一个可读的response.body 定义可读。 Response 的数据类型是String。如果你知道这个 String 的内容是什么,你可以写一个 expect 来看看这是一个 可读 内容,不管你的意思是什么。 xlsx 是一个压缩目录结构,如果你真的想读取文件内容,你首先必须解压缩它,它会产生几个目录,其中大部分是 xml 文件内容。然后你必须读取实际包含内容的 xml 文件(相对于所有其他 xlsx '开销'),然后从 xml 中提取预期的内容。如果你有决心,这是可行的,但不是微不足道的。 【参考方案1】:

我使用了caxlsx gem,它无法读取 Excel 文件,所以我必须安装另一个 gem(Roo 或 simple_xlsx_reader)来读取 excel 文件,然后我打开 response.body 或带有 @987654327 的文件@宝石

【讨论】:

以上是关于为啥 response.body 不能用 xlsx 格式读取的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能使用 write.xlsx 追加 [重复]

为啥会出现“svn: E120106: ra_serf: The server sent a truncated HTTP response body”错误? [复制]

wps两个表格使用vlookup匹配为啥出现所引用的单元格不能位于256列

本地docker不能登录远程harbor服务器,error response from daemon,error parsing http 403 response body

本地docker不能登录远程harbor服务器,error response from daemon,error parsing http 403 response body

为啥必须创建一个中间对象来引用 R 中的 xlsx 文件?