我正在使用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或删除它)但没有成功。
任何人都可以告诉我如何解决这个问题。
由于
答案 0 :(得分:33)
好的,我这样做了:
WorkbookSettings ws = new WorkbookSettings();
ws.setEncoding("Cp1252");
Workbook workbook = Workbook.getWorkbook(stream, ws);
答案 1 :(得分:3)
WorkbookSettings将查找系统属性jxl.encoding
如果您无法轻松访问WorkbookSettings(即来自Drools- ExcelParser),您可能会发现这更适合。
答案 2 :(得分:-2)
首先,请确保您使用的是最新版本的POI(类似于3.7或3.8 beta 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
假设工作正常,那么您就知道自己的问题出在Google App Engine中。