3

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

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

此错误发生在以下代码行:

p.to_stream.read.

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

有没有人见过这个错误?

4

1 回答 1

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

于 2014-07-03T11:54:55.593 回答