14

次のように、JExcel を使用して GAE/Java アプリケーションに Excel ファイルをロードしています。

ファイルをアップロードするための HTML フォームは次のようになります。

<form id="" action="/save" method="post" enctype="multipart/form-data" accept-charset="ISO-8859-1">
    <input name="file" type="file" value="load"/>
    <input type="submit"value="load excel"/>
</form>

そして私が持っているサーバーでは:

ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(request);
while (iterator.hasNext()) {
    FileItemStream item = iterator.next();
    InputStream stream = item.openStream();
    if (!item.isFormField()) {
        //if it's not a form field it's a file

        Workbook workbook = Workbook.getWorkbook(stream);
        ...
        String name = sheet.getCell(COL_NUMBER, row).getContents();
    }
}

問題は、セルに ' city ó ' のようなものを書き込むと、サーバーを読み込むときに変数名が ' city ? ' になることです。'。エンコードが正しくありません。

accept-charset="ISO-8859-1" を変更しようとしましたが (utf-8 に設定するか削除します)、成功しませんでした。

この問題を解決する方法を教えてください。

ありがとう

4

3 に答える 3

35

OK、私はこれを行うことでそれを得ました:

WorkbookSettings ws = new WorkbookSettings();
ws.setEncoding("Cp1252");
Workbook workbook = Workbook.getWorkbook(stream, ws);
于 2011-04-18T12:12:31.353 に答える
3

WorkbookSettingsは、システムプロパティjxl.encodingを検索します

WorkbookSettingsに簡単にアクセスできない場合(つまり、Drools-ExcelParserからアクセスする場合)、これが望ましい場合があります。

于 2012-01-24T11:02:06.973 に答える
-2

まず、最新バージョンのPOI(3.7または3.8ベータ2など)を使用していることを確認します。非常に古いバージョンのPOIにはエンコードの問題がありましたが、新しいバージョンを使用している限り、それが問題になることはありません。

次に、ローカルマシンで、ファイルに対してorg.apache.poi.hssf.extractor.ExcelExtractorのようなものを実行します。これにより、POIがエンコーディングを正しく処理していることを確認できます。で実行する

java -classpath poi-3.8-beta2.jar org.apache.poi.hssf.extractor.ExcelExtractor --show-sheet-names Y -i MyExcel.xls

それが正常に機能すると仮定すると、問題はGoogleAppEngine内にあることがわかります。

于 2011-04-18T11:40:35.270 に答える