我正在一个项目中,该项目需要读取Excel工作簿,调用必要的Web服务,然后从Web服务获取响应,并将该信息输入到已读取的同一Excel工作簿中。
这是我尝试写入Excel工作簿时遇到的错误:
Exception in thread "main" org.apache.poi.POIXMLException: java.io.IOException: Can't obtain the input stream from /docProps/app.xml
at org.apache.poi.POIXMLDocument.getProperties(POIXMLDocument.java:141)
at org.apache.poi.POIXMLDocument.write(POIXMLDocument.java:177)
at ext.ExcelProcessor.main(ExcelProcessor.java:197)
Caused by: java.io.IOException: Can't obtain the input stream from /docProps/app.xml
at org.apache.poi.openxml4j.opc.PackagePart.getInputStream(PackagePart.java:500)
at org.apache.poi.POIXMLProperties.<init>(POIXMLProperties.java:75)
at org.apache.poi.POIXMLDocument.getProperties(POIXMLDocument.java:139)
... 2 more
这是我打开文件/读取的代码:
pkg = OPCPackage.open(xslFile);
theWorkbook = new XSSFWorkbook(pkg);
之后,我读取每一行并提取每个单元格值。
完成此操作后,我将在“成功和结果消息”标题下创建单元格,然后执行以下操作:
String sessionData = sessionKey[1];
String[] cellValCurrRow = rowCellVals.get(r-1);
String attachmentData[] = WQSServices.uploadAttachment(sessionData, cellValCurrRow);
XSSFCell cell = xslRows[r].getCell(7);
if(cell == null)
{
cell = xslRows[r].createCell(7);
}
System.out.println("The Cell: "+cell.getStringCellValue());
XSSFCell cell2 = xslRows[r].getCell(8);
if(cell2 == null)
{
cell2 = xslRows[r].createCell(8);
}
System.out.println("The Cell: "+cell2.getStringCellValue());
cell.setCellType(Cell.CELL_TYPE_STRING);
cell2.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(attachmentData[0]);
cell2.setCellValue(attachmentData[1]);
System.out.println("New Cell Data: 1-"+cell.getStringCellValue()+" 2-"+cell2.getStringCellValue());
FileOutputStream fos = new FileOutputStream(xslFile);
theWorkbook.write(fos);
fos.close();
有没有人遇到过类似的问题?
列出的当前问题是自2010年以来一直存在的错误,可以在@
https://issues.apache.org/bugzilla/show_bug.cgi?id=49940找到。
在下面的stackoverflow列表中,找到一种解决方法,如果您再次关闭并重新打开该书,然后再对文件进行另一次写出,则该书将正常工作。这绝对不是有效的方法,但是它确实可以解决问题,直到Apache-
POI开发团队找出问题为止。
我正在处理一个项目,该项目需要读取Excel工作簿,调用必要的Web服务,然后从Web服务获取响应,并将该信息输入到已读取的同一Excel工作簿中。 以下是我在尝试写入Excel工作簿时看到的错误: 以下是我打开文件/读取的代码: 在此之后,我读取每一行并提取每个单元格值。 完成后,我将在成功和结果消息的标题下创建单元格,然后执行以下操作: 有人遇到过类似的问题吗?
这是我读写现有excel文件的课程。我一直在主类中通过传递filePath和fileName来调用这些函数。 当我在main中使用readExcel获取一个工作簿并调用这个函数时: 我得到了正确的行,并且能够调用此行上的所有函数。但是对于写Excel()中完全相同的工作表中的完全相同的行,我得到了一个空指针异常(上面代码中***前面的行)。getRow()在这里给我null。我在这里做错了什么?
我需要检查工作表是否存在。如果存在,您必须键入下一个现有行,并且不要创建新的工作表。 您当前正在删除当前的电子表格,而我在电子表格中只写了一行。 我该如何解决这个问题?
我是Selenium Web自动化的新手,请对我手软。 我创建了一个将数组内容写入excel工作表的方法。我没有发现异常或错误,也没有看到数据被写入excel表。 excel工作表的名称-mysheet.xlsx excel工作簿中工作表的名称:“FirstLevelMenu”
我正在使用ApachePOI从Spring应用程序写入Excel文件(遵循本教程:https://www.roytuts.com/generic-way-of-writing-data-in-excel-using-apache-poi/。我的函数的身体几乎是一样的。) 然后我把这个方法叫做: 调试时,我可以看到正确的值被传递到单元格。但是当我通过workbook.write(outputStre
我有包含多个工作表的大型excel文件。 我只想处理文件中的一个工作表...从两列读取值并更新两列。 使用此代码,我可以从Sheet读取数据。但无法确定如何将输出保存回来。 文件很大,我只想使用事件API。 我已成功地使用此代码进行了测试。 但这会在内存中加载整个文件(导致应用程序崩溃)...而我只需要编辑一个工作表。