从ruby中的流中读取.xlsx文件

时间:2015-03-25 17:54:46

标签: ruby-on-rails ruby rspec import-from-excel axlsx

我正在使用axlsx gem将内容写入.xlsx文件。我使用以下代码将文件流式传输到浏览器:

  send_data excel_package.to_stream.read, type: "application/xlsx", filename: filename

现在我想为此编写测试用例,并希望在我的rspec中读取相同的文件。我怎样才能做到这一点 ?我查找了可以读取excel文件的其他库,但是所有这些库都是从磁盘读取的。

1 个答案:

答案 0 :(得分:0)

该包是一个zip存档。

您可以做的最简单的事情是将软件包写入磁盘并使用RubyZip加载它,但是如果您希望一切工作没有磁盘I / O,您可以查看rubyzip的InputStream以从StringIO加载,{ {3}}

一旦您有权访问zip存档。从那里,您可以使用Nokogiri等工具加载要指定的包部件的条目,并根据需要进行断言。

您可以在https://github.com/rubyzip/rubyzip/blob/master/lib/zip/input_stream.rb

找到部件的示例列表