使用axlsx gem生成Excel文件时出现UTF-8错误

时间:2013-11-08 19:35:29

标签: ruby-on-rails axlsx

我正在尝试使用axlsx gem生成Excel文件。这是一个Ruby Rails应用程序,用户可以在浏览器中查看报表,并可以单击链接将数据导出到Excel。但是,我收到以下错误:

  

“ArgumentError(UTF-8中的无效字节序列)。”

以下代码行发生此错误:

p.to_stream.read.

我正在使用Ruby 1.9.3和Rails 2.3.16。我没有序列化或尝试将文件写入磁盘;我只想让Excel打开文件,然后用户可以根据需要保存文件。

有没有人见过这个错误?

1 个答案:

答案 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中看起来很好。