我正在使用 axlsx gem 将内容写入 .xlsx 文件。我正在使用以下代码将文件流式传输到浏览器:
send_data excel_package.to_stream.read, type: "application/xlsx", filename: filename
现在我想为此编写测试用例,并想在我的 rspec 中读取相同的文件。我怎样才能做到这一点 ?我寻找其他可以读取 excel 文件的库,但所有这些库都是从磁盘读取的。
我正在使用 axlsx gem 将内容写入 .xlsx 文件。我正在使用以下代码将文件流式传输到浏览器:
send_data excel_package.to_stream.read, type: "application/xlsx", filename: filename
现在我想为此编写测试用例,并想在我的 rspec 中读取相同的文件。我怎样才能做到这一点 ?我寻找其他可以读取 excel 文件的库,但所有这些库都是从磁盘读取的。
该软件包是一个 zip 存档。
您可以做的最简单的事情是将包写入磁盘并使用 RubyZip 加载它,但是如果您希望在没有磁盘 I/O 的情况下一切正常,您可以查看 rubyzip 的 InputStream 从 StringIO 加载,https://github.com/ rubyzip/rubyzip/blob/master/lib/zip/input_stream.rb
一旦您有权访问 zip 存档。从那里,您可以使用 Nokogiri 等工具加载要指定的包部分的条目,并根据需要进行断言。
您将在此处找到零件示例列表https://github.com/randym/axlsx/blob/master/test/tc_package.rb#L163