Buenas, estoy intentando cargar un excel en mi aplicación android. He estado buscando por internet pero no he encontrado mucha información relativa al tema. He probado el código que venia en una de las pocas páginas que encontré pero no me funciona correctamente. Para empezar en la primera condicional que hay ya me da error. Comentando esta condicional me salta una excepción con el fallo
open failed: ENOENT (no such file or directory)
El código que tengo en la activity es el siguiente.
Código Java:
Ver originalimport java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
public class Importar extends ActionBarActivity {
public static boolean isExternalStorageReadOnly() {
if (Environment.
MEDIA_MOUNTED_READ_ONLY.
equals(extStorageState
)) { return true;
}
return false;
}
public static boolean isExternalStorageAvailable() {
if (Environment.
MEDIA_MOUNTED.
equals(extStorageState
)) { return true;
}
return false;
}
String archivo
="preguntas.xls"; private static void importarexcel
(Context context,
String archivo
){ if(!isExternalStorageAvailable()||isExternalStorageReadOnly()){
Log.e("Error: ", "No se pueden leer archivos externos");
return;
}
try{
File file
=new File(context.
getExternalFilesDir(null), archivo
); POIFSFileSystem myFileSystem=new POIFSFileSystem(myInput);
HSSFWorkbook myWorkBook=new HSSFWorkbook(myFileSystem);
HSSFSheet mySheet=myWorkBook.getSheetAt(0);
while(rowIter.hasNext()){
HSSFRow myRow=(HSSFRow)rowIter.next();
while(cellIter.hasNext()){
HSSFCell myCell=(HSSFCell)cellIter.next();
Log.d("Dato:", "Valor: "+myCell.toString());
}
}
Log.e("Error: ", e.getMessage());
}
return;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_importar);
importarexcel(getBaseContext(), archivo);
}
}
En el archivo AndroidManifest.xml tengo lo siguiente:
Código XML:
Ver original<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.examenes"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.examenes.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.examenes.Preguntas"
android:label="@string/title_activity_preguntas" >
</activity>
<activity
android:name="com.example.examenes.Asignaturas"
android:label="@string/title_activity_asignaturas" >
</activity>
<activity
android:name="com.example.examenes.Examen"
android:label="@string/title_activity_examen" >
</activity>
<activity
android:name="com.example.examenes.Examenes"
android:label="@string/title_activity_examenes" >
</activity>
<activity
android:name="com.example.examenes.Temas"
android:label="@string/title_activity_temas" >
</activity>
<activity
android:name="com.example.examenes.Importar"
android:label="@string/title_activity_importar" >
</activity>
</application>
La lectura y escritura de la memoria externa está activa y el archivo que intento mostrar está en la memoria SD.