2016-04-26 5 views
0

Мне просто нужно выбрать файл XLSX с моей SD-карты и прочитать его через apache poi. вот моя цель вызова на карту память и выберите файл XLSXxlsx чтение через apache poi

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

Вот код для получения пути выбранного файла .xlsx здесь является производящей ошибкой я думаю, что его по призванию книги, но я не могу ясно это

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(); 
     } 


    } 


    } 

мой список ошибок приведен ниже

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] 

спасибо за помощь заранее .....

ответ

2

Избавьтесь от catch - e.printStackTrace(), это скорее всего скрывает фактическое исключение, которое вы получаете. Вы лучше рассмотрите, как правильно их регистрировать.

И посмотрите на https://github.com/andruhon/android5xlsx, он предлагает некоторые способы решения проблем при использовании Apache POI на Android.