Encoding problem in JExcel

[亡魂溺海] 提交于 2019-11-30 01:13:38

问题


I am loading an excel file in an GAE/Java application with JExcel like this:

The html form to upload the file islike this:

<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>

and in the server I have:

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();
    }
}

The problem is that if I write in the cell something like 'city ó' when it reads in the server the variable name is ' city ?'. The encoding is not OK.

I've tried to change accept-charset="ISO-8859-1" (setting it to utf-8 or removing it) but with no success.

Can anyone tell me how could I solve this problem.

Thanks


回答1:


OK, I got it by doing this:

WorkbookSettings ws = new WorkbookSettings();
ws.setEncoding("Cp1252");
Workbook workbook = Workbook.getWorkbook(stream, ws);



回答2:


WorkbookSettings will look for system property jxl.encoding

If you don't have easy access to WorkbookSettings (i.e. coming from Drools- ExcelParser) you might find this preferable.




回答3:


First up, make sure you're using a recent version of POI (something like 3.7 or 3.8 beta 2). Very old versions of POI did have encoding problems, but as long as you're on a new one then that shouldn't be your issue.

Next, on your local machine, run something like org.apache.poi.hssf.extractor.ExcelExtractor against the file. This will let you confirm that POI is handling the encoding correctly. Run it with

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

Assuming that works fine, then you know your issue is within Google App Engine.



来源:https://stackoverflow.com/questions/5701743/encoding-problem-in-jexcel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!