2015-11-27 4 views
0

Я пытаюсь прочитать файл * .xlsx, и я получаю довольно много ошибок в консоли. Я новичок в этом, и имейте в виду, что если я пытаюсь читать файлы * .xls, у меня проблем нет.Пытается прочитать * .xlsx файл с помощью POI API

Это код, который я использую:

public class XlsxTest { 

    public static void main(String[] args) throws IOException { 

     FileInputStream fis = new FileInputStream(new File("autotest2.xlsx")); 
     XSSFWorkbook wb = new XSSFWorkbook(fis); 
     XSSFSheet sheet = wb.getSheetAt(0); 
     FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); 

     for (Row row : sheet) { 
      for (Cell cell : row) { 
       switch (formulaEvaluator.evaluateInCell(cell).getCellType()) { 
       case Cell.CELL_TYPE_NUMERIC: 
        System.out.println(cell.getNumericCellValue() + "\t\t"); 
        break; 

       case Cell.CELL_TYPE_STRING: 
        System.out.println(cell.getStringCellValue() + "\t\t"); 
        break; 
       } 
      } 

      System.out.println(); 
     } 
    } 
} 

Когда я пытаюсь запустить это я получаю следующие ошибки:

Exception in thread "main" 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:465) 
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:173) 
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:278) 
    at XlsxTest.main(XlsxTest.java:18) 
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) 
    ... 4 more 
Caused by: java.lang.ExceptionInInitializerError 
    at org.apache.xmlbeans.impl.schema.BuiltinSchemaTypeSystem.fillInType(BuiltinSchemaTypeSystem.java:1025) 
    at org.apache.xmlbeans.impl.schema.BuiltinSchemaTypeSystem.<clinit>(BuiltinSchemaTypeSystem.java:223) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.xmlbeans.XmlBeans.getNoType(XmlBeans.java:856) 
    at org.apache.xmlbeans.XmlBeans.<clinit>(XmlBeans.java:881) 
    at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(Unknown Source) 
    at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:83) 
    ... 9 more 
Caused by: java.lang.RuntimeException: Installation Problem??? Couldn't load messages: Can't find bundle for base name org.apache.xmlbeans.impl.regex.message, locale en_US 
    at org.apache.xmlbeans.impl.regex.RegexParser.setLocale(RegexParser.java:88) 
    at org.apache.xmlbeans.impl.regex.RegexParser.<init>(RegexParser.java:78) 
    at org.apache.xmlbeans.impl.regex.ParserForXMLSchema.<init>(ParserForXMLSchema.java:28) 
    at org.apache.xmlbeans.impl.regex.RegularExpression.setPattern(RegularExpression.java:2996) 
    at org.apache.xmlbeans.impl.regex.RegularExpression.setPattern(RegularExpression.java:3009) 
    at org.apache.xmlbeans.impl.regex.RegularExpression.<init>(RegularExpression.java:2975) 
    at org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<init>(SchemaRegularExpression.java:27) 
    at org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<init>(SchemaRegularExpression.java:23) 
    at org.apache.xmlbeans.impl.regex.SchemaRegularExpression$1.<init>(SchemaRegularExpression.java:44) 
    at org.apache.xmlbeans.impl.regex.SchemaRegularExpression.buildKnownPatternMap(SchemaRegularExpression.java:43) 
    at org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<clinit>(SchemaRegularExpression.java:38) 
    ... 19 more 

Может кто-нибудь помочь мне с этим вопросом? Надеюсь, что я предоставил необходимую информацию.

Спасибо!

+0

это может помочь http://stackoverflow.com/questions/25364338/org-apache-poi-poixmlexception-java-lang-reflect-invocationtargetexception-in-p –

+0

Спасибо за комментарий. К сожалению, я видел эту нить, и это мне не помогает. У меня есть простой файл xlsx, созданный с использованием MS Excel с простым текстом внутри. – Bogdan

+0

доля poi jar подробности. –

ответ

0
  1. Переименовать jar lib в zip или просто открыть org/apache/xmlbeans/impl/regex загруженного lib.
  2. Найти файл message.properties (и message_xx.properties при необходимости).
  3. Положить файл (ы) в используемую библиотеку по org/apache/xmlbeans/impl/regex path.
  4. Прибыль!
Смежные вопросы