Saltar al contenido

Lectura de archivos CSV en la aplicación de Android

Solución:

Pruebe OpenCSV, le facilitará la vida.

Primero, agregue este paquete a su gradle dependencias de la siguiente manera

implementation 'com.opencsv:opencsv:4.6'

Entonces puedes hacer

import com.opencsv.CSVReader;
import java.io.IOException;
import java.io.FileReader;


...

try {
    CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
    String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }
} catch (IOException e) {

}

o

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
List myEntries = reader.readAll();

Editar después del comentario

try {
    File csvfile = new File(Environment.getExternalStorageDirectory() + "/csvfile.csv");
    CSVReader reader = new CSVReader(new FileReader(csvfile.getAbsolutePath()));
    String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }
} catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(this, "The specified file was not found", Toast.LENGTH_SHORT).show();
}

Si desea empaquetar el .csv archivo con la aplicación y haga que se instale en el almacenamiento interno cuando se instale la aplicación, cree un assets carpeta en su proyecto src/main carpeta (p. ej., c:myappappsrcmainassets), y poner el .csv archivo allí, luego haga referencia a él de esta manera en su actividad:

String csvfileString = this.getApplicationInfo().dataDir + File.separatorChar + "csvfile.csv"
File csvfile = new File(csvfileString);

El siguiente fragmento lee un archivo CSV del raw carpeta de recursos (que se empaquetará en su .apk archivo en compilación).

Android de forma predeterminada no crea el raw carpeta. Cree una carpeta sin formato en res/raw en su proyecto y copie su archivo CSV en él. Mantenga el nombre del archivo CSV en minúsculas y conviértalo en formato de texto cuando se le solicite. Mi nombre de archivo CSV es welldata.csv.

En el fragmento, WellData es la clase modelo (con constructor, getter y setter) y wellDataList es el ArrayList para almacenar los datos.

private void readData() {
    InputStream is = getResources().openRawResource(R.raw.welldata);
    BufferedReader reader = new BufferedReader(
            new InputStreamReader(is, Charset.forName("UTF-8")));
    String line = "";

    try {
        while ((line = reader.readLine()) != null) {
           // Split the line into different tokens (using the comma as a separator).
            String[] tokens = line.split(",");

            // Read the data and store it in the WellData POJO.
            WellData wellData = new WellData();
            wellData.setOwner(tokens[0]);
            wellData.setApi(tokens[1]);
            wellData.setLongitude(tokens[2]);
            wellData.setLatitude(tokens[3]);
            wellData.setProperty(tokens[4]);
            wellData.setWellName(tokens[5]);
            wellDataList.add(wellData);

            Log.d("MainActivity" ,"Just Created " + wellData);
        }
    } catch (IOException e1) {
        Log.e("MainActivity", "Error" + line, e1);
        e1.printStackTrace();
    }
}

Esto funcionó para mí en Kotlin. Deberá colocar el archivo myfile.csv en la carpeta res / raw, creando la carpeta si no está allí.

val inputStream: InputStream = resources.openRawResource(R.raw.myfile)
val reader = BufferedReader(InputStreamReader(inputStream, Charset.forName("UTF-8")))
reader.readLines().forEach {

    //get a string array of all items in this line
    val items = it.split(",")

    //do what you want with each item
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *