org.apache.poi.Исключение POIXMLException: java.lang.reflect.InvocationTargetException получает ошибку в Android 4

#android #apache-poi

#Android #apache-poi

Вопрос:

У меня ошибка в Android версии 4

  E/ExcelSheet: null
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:456)
  at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:162)
  at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:271)
  at com.example.vinove.excelsheetapp.Poi.ExcelSheet.readExcelSheet(ExcelSheet.java:63)
  at com.example.vinove.excelsheetapp.Activities.MainActivity$MyTask.doInBackground(MainActivity.java:137)
  at com.example.vinove.excelsheetapp.Activities.MainActivity$MyTask.doInBackground(MainActivity.java:107)
  at android.os.AsyncTask$2.call(AsyncTask.java:288)
  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.reflect.InvocationTargetException
  at java.lang.reflect.Constructor.constructNative(Native Method)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
  at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:456) 
  at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:162) 
  at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:271) 
  at com.example.vinove.excelsheetapp.Poi.ExcelSheet.readExcelSheet(ExcelSheet.java:63) 
  at com.example.vinove.excelsheetapp.Activities.MainActivity$MyTask.doInBackground(MainActivity.java:137) 
  at com.example.vinove.excelsheetapp.Activities.MainActivity$MyTask.doInBackground(MainActivity.java:107) 
  at android.os.AsyncTask$2.call(AsyncTask.java:288) 
  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
  at java.lang.Thread.run(Thread.java:841) 
Caused by: java.lang.NoClassDefFoundError: org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory
  at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:46)
  at java.lang.reflect.Constructor.constructNative(Native Method)
  

Комментарии:

1. у меня ошибка в Android версии 4. что-то

2. Это только половина трассировки стека, и отсутствует причина ошибки — что говорит бит «вызвано» в трассировке стека?

Ответ №1:

Apache POI не будет работать из коробки на Android, существуют различные проблемы, с которыми вы столкнетесь.

Есть несколько проектов, которые позволяют использовать части Apache POI на Android:

  1. https://github.com/andruhon/android5xlsx (для Android 5) и https://github.com/andruhon/AndroidReadXLSX (для Android 4), который основан на Apache POI 3.12
  2. https://github.com/centic9/poi-on-android / (для Android 5, поддерживается мной), который можно использовать с любой версией POI, например, 3.15 в настоящее время