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:
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/) |