问题描述
我有一组需要阅读的Excel文件,在某些情况下,我需要对其进行修改。我的代码可以打开并读取一些Excel文件,对于某些Excel文件,它会显示要打开的错误消息,
这是代码的主要部分:
String fileName = "inputs\\Myfiles.xlsx";
FileInputStream file = new FileInputStream(new File(fileName));
XSSFWorkbook workbook = new XSSFWorkbook(file);
int totalSheets = workbook.getNumberOfSheets();
System.out.println("The file has " + totalSheets + " sheets.\n");
//Get first/desired sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);
//Iterate through each rows one by one
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row,iterate through all the columns
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
//Check the cell type and format accordingly
switch (cell.getCellType())
{
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t");
break;
//case Cell.CELL_TYPE_FORMULA
}
}
System.out.println("");
}
file.close();
这是我遇到的错误:
org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:403)
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:408)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:207)
at ReadingFromExcelDemo.main(ReadingFromExcelDemo.java:36)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(UnkNown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(UnkNown Source)
at java.lang.reflect.Constructor.newInstance(UnkNown Source)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
... 5 more
Caused by: org.apache.xmlbeans.XmlException: error: Content is not allowed in trailing section.
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3448)
at org.apache.xmlbeans.impl.store.Locale.parsetoXmlObject(Locale.java:1272)
at org.apache.xmlbeans.impl.store.Locale.parsetoXmlObject(Locale.java:1259)
at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:722)
at org.apache.poi.xssf.usermodel.XSSFVMLDrawing.read(XSSFVMLDrawing.java:107)
at org.apache.poi.xssf.usermodel.XSSFVMLDrawing.<init>(XSSFVMLDrawing.java:102)
... 10 more
Caused by: org.xml.sax.SAXParseException; systemId: file://; lineNumber: 29; columnNumber: 18; Content is not allowed in trailing section.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(UnkNown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(UnkNown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(UnkNown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(UnkNown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(UnkNown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDriver.next(UnkNown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(UnkNown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(UnkNown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(UnkNown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(UnkNown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(UnkNown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(UnkNown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(UnkNown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(UnkNown Source)
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3422)
... 16 more
我注意到Excel文件中有关于一栏的注释,用箭头删除该注释不会产生任何错误并且可以正常工作。
在调试过程中,我注意到XSSFWorkbook workbook = new XSSFWorkbook(file);
这条语句正在制造所有麻烦。
这是一个Java项目,在Eclipse(不是Maven)中,我正在使用Apache Poi库。
最近几天我一直收到此错误,尝试了许多我在本网站以及Google中发现的东西,任何建议都将非常有帮助。非常感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)