2016-04-26 21 views
0

Ich muss nur eine XLSX-Datei von meiner SD-Karte auswählen und es durch Apache Poi lesen. hier ist meine Absicht Anruf auf SD-Karte und die xlsx Datei wählenxlsx lesen durch apache poi

 Intent intent = new Intent(); 
     intent.setType("*/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE); 
    } 

Hier ist der Code für den Pfad der ausgewählten XLSX-Datei empfängt hier die Fehlererzeugungs i seine denken die Arbeitsmappe auf Aufruf, aber ich kann nicht klar, es

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == PICK_FROM_FILE && resultCode == RESULT_OK) { 


     // File file = new File(Environment.getExternalStorageDirectory(), data.getData().toString()); 
     Uri path =data.getData(); 
     ContentResolver cr=this.getContentResolver(); 
     File fpath=new File(path.toString()); 


     try { 
      //imputStream 
      InputStream myfile=cr.openInputStream(path); 
      Log.e("myapp","here"); 
      //Workbooh 
      Workbook wrk=new HSSFWorkbook(myfile); 


      //sheet 
      Sheet firstsheet=wrk.getSheetAt(0); 

      //RowIterator 
      Iterator<Row> iterator=firstsheet.iterator(); 
      while(iterator.hasNext()) 
      { 
       Row next=iterator.next(); 

       //CellIterator 
       Iterator<Cell> cellIterator=next.cellIterator(); 
       while(cellIterator.hasNext()) 
       { 
        Cell cell=cellIterator.next(); 

        switch (cell.getCellType()) 
        { 
         case Cell.CELL_TYPE_STRING: 
          Toast.makeText(getApplicationContext(),cell.getStringCellValue()+" ",Toast.LENGTH_SHORT).show(); 
          break; 
         case Cell.CELL_TYPE_NUMERIC: 
          Toast.makeText(getApplicationContext(),cell.getNumericCellValue()+" ",Toast.LENGTH_SHORT).show(); 
        } 
       } 

      } 


     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } 


    } 

Liste meiner Fehler unter

gegeben
04-26 12:18:17.067 2736-3126/? E/Watchdog: [email protected] 1540 [04-26 12:18:17.069] 
04-26 12:18:47.067 2736-3126/? E/Watchdog: [email protected] 1541 [04-26 12:18:47.072] 
04-26 12:19:17.067 2736-3126/? E/Watchdog: [email protected] 1542 [04-26 12:19:17.073] 
04-26 12:19:47.072 2736-3126/? E/Watchdog: [email protected] 1543 [04-26 12:19:47.075] 
04-26 12:20:17.072 2736-3126/? E/Watchdog: [email protected] 1544 [04-26 12:20:17.076] 

dank für Hilfe im Voraus .....

Antwort

2

Entfernen Sie den Catch - e.printStackTrace(), das verbirgt wahrscheinlich die tatsächliche Ausnahme, die Sie erhalten. Sie sollten besser prüfen, wie Sie diese korrekt protokollieren.

Und werfen Sie einen Blick auf https://github.com/andruhon/android5xlsx, bietet es einige Problemumgehungen für Probleme bei der Verwendung von Apache POI auf Android.