4

JExcelライブラリを使用してExcelスプレッドシートを読み取っています。スプレッドシートの各セルには、44言語(英語、ポルトガル語、フランス語、中国語など)のローカリゼーション文字列を含めることができます。今日、私はAPIが使用することになっているエンコーディングに関して何も伝えません。中国語はOKですが、ポルトガル語とドイツ語は常に台無しになります。どういうわけか、デフォルトのエンコーディング(私の開発ボックスではMacRoman、本番環境ではUTF-8)は、Excelワークブックから取得した文字列を適切に解釈できません。JExcelがファイルの文字エンコードを解釈する方法に何か問題があるはずです。

そうは言っても...

Excelブックのすべての文字列は、同じ文字セットでエンコードされていますか?

この文字セットが何であるかを尋ねることができるワークブックのメタデータはありますか(まだ見つけていません)?

すべてのセルをjchardet(http://jchardet.sourceforge.net/)のようなものに通すと、ワークブック全体の文字エンコードを理解できる可能性があります(これは、最初の質問が「はい、特定のワークブックのすべての刺し傷は同じ文字セットでエンコードされています ")?

非常に多くの質問、非常に少ない時間。

4

2 に答える 2

10

直接答えは得られませんでしたが、マットが仕様を発見したことで、実際の答えへの道が示されました: http ://sc.openoffice.org/excelfileformat.pdf

それまでの間、エンコーディングを常に「Cp1252」に設定するだけで問題は解決しました。正確な理由はわかりませんが、いわば贈り物の馬を口の中に見ているわけではなく、先に進んでいます。

    WorkbookSettings workbookSettings = new WorkbookSettings();
    workbookSettings.setEncoding( "Cp1252" );
    Workbook.getWorkbook( theFile, workbookSettings );

これを答えたと呼びます。

于 2011-09-17T01:05:52.547 に答える
1

Excelファイルからセルの値を読み取っているときに、一部の値が「?」で表示されるという問題があります。これはアクセント付きの文字に対応しているので...そのコードはこの問題を解決しますか?私はWindowsで実行しているので、Linux(展開先のサーバーのSO)で実行する場合ほど速くテストすることはできません...

于 2013-06-19T14:34:25.780 に答える