我正在尝试使用axlsx gem生成Excel文件。这是一个Ruby Rails应用程序,用户可以在浏览器中查看报表,并可以单击链接将数据导出到Excel。但是,我收到以下错误:
“ArgumentError(UTF-8中的无效字节序列)。”
以下代码行发生此错误:
p.to_stream.read.
我正在使用Ruby 1.9.3和Rails 2.3.16。我没有序列化或尝试将文件写入磁盘;我只想让Excel打开文件,然后用户可以根据需要保存文件。
有没有人见过这个错误?
答案 0 :(得分:2)
我在规范中看到了同样的错误。我还没有进一步研究,但我现在强制编码为二进制:
# …
data = package.to_stream.read
data.force_encoding("BINARY")
expect(data).to be_present
我不认为这是一个很好的解决方案,但我将其留在这里作为解决方法。如果我继续挖掘,我可能会更新这个答案。
编辑:我已经尝试在代码本身中执行force_encoding
,因此生成器类会to_stream.read.force_encoding("BINARY")
。这似乎有效:我的UTF-8字符串在创建的文档中的LibreOffice中看起来很好。