我正在通过ajax-post调用从UI上传excel文件,并试图从支持的Restful服务java代码中读取该文件,但我无法正确打印excel文件内容。文件名和其他属性打印正确。
[java] org.jboss.resteasy.spi.UnhandledException: org.jboss.resteasy.core.ExceptionAdapter: : null
public Response upload(final MultipartFormDataInput input)throws Exception{
for (InputPart part : input.getParts()) { // you might get multiple files
final String disposition = part.getHeaders().getFirst("Content-Disposition");
final String fileName = disposition.replaceFirst("(?i)^.*filename=\"([^\"]+)\".*$", "$1");
InputStream inputStream = part.getBody(FileInputStream.class, null);
try {
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet datatypeSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = datatypeSheet.iterator();
while (iterator.hasNext()) {
Row currentRow = iterator.next();
Iterator<Cell> cellIterator = currentRow.iterator();
while (cellIterator.hasNext()) {
Cell currentCell = cellIterator.next();
if (currentCell.getCellType() == Cell.CELL_TYPE_STRING) {
System.out.print(currentCell.getStringCellValue() + "--");
} else if (currentCell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
System.out.print(currentCell.getNumericCellValue() + "--");
} else if(currentCell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
System.out.print(currentCell.getBooleanCellValue() + "--");
} else {
System.out.print("<BLANK>--");
}
}
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
input.close();
return Response.ok("OK").build();
}
[java] Caused by: java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
我发现我们需要将excel流作为
File.class而不是InputStream.class
public Response upload(final MultipartFormDataInput input)throws Exception{
Map<String, List<InputPart>> formDataMap = input.getFormDataMap();
File inputStream = formDataMap.get("files").get(0).getBody(File.class, null);
String extraField = formDataMap.get("extraField").get(0).getBodyAsString();
String CustomField = formDataMap.get("CustomField").get(0).getBodyAsString();
try {
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet datatypeSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = datatypeSheet.iterator();
while (iterator.hasNext()) {
Row currentRow = iterator.next();
Iterator<Cell> cellIterator = currentRow.iterator();
while (cellIterator.hasNext()) {
Cell currentCell = cellIterator.next();
if (currentCell.getCellType() == Cell.CELL_TYPE_STRING) {
System.out.print(currentCell.getStringCellValue() + "--");
} else if (currentCell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
System.out.print(currentCell.getNumericCellValue() + "--");
} else if(currentCell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
System.out.print(currentCell.getBooleanCellValue() + "--");
} else {
System.out.print("<BLANK>--");
}
}
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
input.close();
return Response.ok("OK").build();
}
问题内容: 我需要在Java应用程序中读取Excel 2007 XLSX文件。有谁知道一个很好的API来完成这项任务? 问题答案: AFAIK还没有可用的xlsx库。但是有些旧的xls: 一个库是jxls,它内部使用已经提到的POI。 其他2个链接:处理Excel文件,用于读写Excel XLS文档文件的Java库 。
我正在使用Java开发一个web应用程序,在这里我有一个方法可以读取。使用apache poi的xlsx文件: 该方法工作正常,但是该方法处理具有数千行记录的文件的可能性有多大,例如,大约2530万行。当处理一个大文件时,我采取以下异常: 我需要知道如何避免这种错误。例如,如果有,请读取并处理该文件。xlsx 1000至1000线,或其他解决方案。
因此,我一直在使用Python3.2和OpenPyXL的iterable工作簿,如这里的“优化阅读器”示例所示。 当我尝试使用此策略读取从简单文档中提取的一个或多个文件时,就会出现问题。zip存档(手动和通过python zipfile包)。当我调用我得到“A”和我得到1,当要求打印每个单元格的值时,如下所示: 它打印A1、A2、A3、A4、A5、A6和A7中的值,而不管文件实际有多大。文件本身没
我需要帮助在阅读xlsx文件,也使用密码解锁,正如上面所做的。
我在用图书馆 我在努力 库,但无法将其转换为工作簿 注意:在最终结果中,我希望返回XSSFWorkbook 上面的代码会内存溢出,任何帮助都将提前感谢
我在Ubuntu14版本上使用Java1.7版本的STS下运行我的代码,尽管我已经通过添加Apache POI3.9版本和3.2版本的所有JAR测试了两个以下的程序,但我无法解决这个问题。但每次它都给出几乎相同的错误 好心地建议我一些事情,提前谢谢。 我得到的错误是 下面的代码用于从文件中读取数据 上面的代码生成了这个错误