【问题标题】:UTF-8 error when generating Excel file using axlsx gem使用 axlsx gem 生成 Excel 文件时出现 UTF-8 错误
【发布时间】:2013-11-08 19:35:29
【问题描述】:

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

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

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

p.to_stream.read.

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

有人见过这个错误吗?

【问题讨论】:

  • 你能在 Rails 之外复制错误吗?如果可以,请发布一些代码作为要点并将其链接到您的问题中。另外,您使用的是什么版本的 Axlsx?

标签: ruby-on-rails axlsx


【解决方案1】:

我在规范中看到了同样的错误。我还没有进一步研究它,但我现在强制编码为二进制:

# …

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多