3

axlsx gemを使用して Excel ファイルを生成しようとしています。これは、ユーザーがブラウザーでレポートを表示し、リンクをクリックしてデータを Excel にエクスポートできる Ruby Rails アプリケーションです。ただし、次のエラーが発生します。

「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 に答える