La hoja de cálculo más utilizada es MS Excel. Este programa está disponible como parte de la suite de escritorio de Microsoft. Por otro lado cuando hablamos de android estamos hablando de desarrollo móvil.

Qué pasa si tienes datos en tu aplicación móvil que quieres analizar en MS Excel. En ese caso necesitas exportar los datos de la base de datos SQLite a Excel. En lugar de inventar nuevas formas de hacerlo, este tutorial te muestra cómo hacerlo con soluciones ya existentes en minutos.

(a). Solución 1: Usar SQLiteToExcel

Esta es una librería ligera para convertir la base de datos SQLite a Excel y convertir Excel a SQLite.

¿Cómo se usa?

Paso 1: Instalarlo

Al ser una solución de terceros, necesitas instalarla vía gradle. Añade la siguiente declaración de implementación en tu build.gradle y sincroniza:

015 Importar Datos desde un archivo SQL

015 Importar Datos desde un archivo...
015 Importar Datos desde un archivo SQL

implementation 'com.ajts.androidmads.SQLite2Excel:library:1.0.4'

Paso 2: Añadir los permisos necesarios

En este caso necesitas el permiso para leer desde el almacenamiento externo del dispositivo. Por tanto, añade el siguiente permiso en tu AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Paso 3: Exportar datos

Por ejemplo, para exportar la base de datos sqlite a la ubicación por defecto, empieza por instanciar la clase SqliteToExcel, pasando el contexto así como el nombre de la base de datos como parámetros a través del constructor:

SqliteToExcel sqliteToExcel = new SqliteToExcel(this, "helloworld.db");

Si quieres exportar y guardar en un destino personalizado, utiliza la siguiente línea:

SqliteToExcel sqliteToExcel = new SqliteToExcel(this, "helloworld.db", directory_path);

¿Y si prefiere exportar sólo una tabla, y exportarla a una sola hoja de Excel? En ese caso puede utilizar la función exportSingleTable(), pasando el nombre de la tabla de la base de datos, el nombre de la hoja de Excel y una llamada de retorno con tres métodos:

sqliteToExcel.exportSingleTable("table1", "table1.xls", new SQLiteToExcel.ExportListener() {
     @Override
     public void onStart() {

     }
     @Override
     public void onCompleted(String filePath) {

     }
     @Override
     public void onError(Exception e) {

     }
});

Y si quieres exportar una lista de tablas de la base de datos a Excel, utilizas la función exportSpecificTables():

sqliteToExcel.exportSpecificTables(tablesList, "table1.xls", new SQLiteToExcel.ExportListener() {
     @Override
     public void onStart() {

     }
     @Override
     public void onCompleted(String filePath) {

     }
     @Override
     public void onError(Exception e) {

     }
});

Para exportar todas las tablas de la base de datos a una hoja de Excel, se utiliza la función exportAllTables() de la siguiente manera:

sqliteToExcel.exportAllTables("table1.xls", new SQLiteToExcel.ExportListener() {
     @Override
     public void onStart() {

     }
     @Override
     public void onCompleted(String filePath) {

     }
     @Override
     public void onError(Exception e) {

     }
});

Si desea excluir columnas específicas, defínalas en una lista de arrays y establézcalas mediante la función setExcludeColumns(), luego pase esa lista de arrays a ese método:

ArrayList<String> columnsToExclude = new ArrayList<String>();
columnsToExclude.add("income_id");
sqliteToExcel.setExcludeColumns(columnsToExclude);
...
sqliteToExcel.export...

Cómo importar de Excel a SQLite

Esta librería también permite importar desde excel a la base de datos sqlite. En este caso se utilizará la clase ExcelToSQLite en lugar de la clase SqliteToExcel que se utilizó al exportar.

Así que empieza por instantanear el ExcelToSQLite y pasar el contexto así como el nombre de la base de datos:

ExcelToSQLite excelToSQLite = new ExcelToSQLite(getApplicationContext(), "helloworld.db");

Para soltar una tabla mientras se importa el excel utilice el siguiente código:

ExcelToSQLite excelToSQLite = new ExcelToSQLite(getApplicationContext(), "helloworld.db", true);

Si quieres exportar la hoja de Excel desde la carpeta de assets en android a la base de datos sqlite, utiliza la función importFromAsset(), pasando el nombre del archivo excel .xls y un callback de importación:

excelToSQLite.importFromAsset("assetFileName.xls", new ExcelToSQLite.ImportListener() {
    @Override
    public void onStart() {

    }

    @Override
    public void onCompleted(String dbName) {

    }

    @Override
    public void onError(Exception e) {

    }
});

Si quieres importar excel desde un directorio a la base de datos utiliza la función importFromFile() y pasa la ruta del directorio:

excelToSQLite.importFromFile(directory_path, new ExcelToSQLite.ImportListener() {
    @Override
    public void onStart() {

    }

    @Override
    public void onCompleted(String dbName) {

    }

    @Override
    public void onError(Exception e) {

    }
});

Ejemplo completo

Descargar el ejemplo completo.

Referencia

A continuación se muestran los enlaces de referencia del código:

Número Enlace
1. Descargar el código
2. [Leer más] (https://github.com/androidmads/SQLite2XL/)
3. [Seguir al autor del código] (https://github.com/androidmads/)