最も一般的に使われている表計算ソフトはMS Excelです。このプログラムは、マイクロソフトのデスクトップスイートの一部として提供されています。一方、アンドロイドの話になると、モバイル開発の話になります。
もし、モバイルアプリの中にMS Excelで分析したいデータがあるとしたらどうでしょう。その場合、SQLiteデータベースからExcelにデータをエクスポートする必要があります。このチュートリアルでは、新しい方法を考案するのではなく、すでにあるソリューションを使って数分でできる方法を紹介します。
(a). 解決策1: SQLiteToExcelを使う
これは、SQLiteデータベースをExcelに変換したり、ExcelをSQLiteに変換するための軽量なライブラリです。
どうやって使うの?
ステップ1: インストール
サードパーティ製のソリューションなので、gradleでインストールする必要があります。以下の実装文を build.gradle
に追加して同期します。
implementation 'com.ajts.androidmads.SQLite2Excel:library:1.0.4'
Step 2: 必要なパーミッションの追加
今回は、端末の外部ストレージからの読み込み権限が必要です。そこで、AndroidManifest.xml
に以下のパーミッションを追加します。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Step 3: データのエクスポート
たとえば、Sqlite データベースをデフォルトの場所にエクスポートするには、まず、SqliteToExcel
クラスをインスタンス化し、コンストラクタでコンテキストとデータベース名をパラメータとして渡します。
SqliteToExcel sqliteToExcel = new SqliteToExcel(this, "helloworld.db");
カスタムの保存先にエクスポートして保存したい場合は、以下の行を使用します。
SqliteToExcel sqliteToExcel = new SqliteToExcel(this, "helloworld.db", directory_path);
1つのテーブルだけをエクスポートして,それを1つのExcelシートにエクスポートしたい場合はどうでしょうか。その場合は、exportSingleTable()
関数を使って、データベースのテーブル名、エクセルシート名、そして3つのメソッドを持つコールバックを渡します。
sqliteToExcel.exportSingleTable("table1", "table1.xls", new SQLiteToExcel.ExportListener() {
@Override
public void onStart() {
}
@Override
public void onCompleted(String filePath) {
}
@Override
public void onError(Exception e) {
}
});
また、データベースのテーブルのリストをエクセルにエクスポートしたい場合は、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) {
}
});
データベース内のすべてのテーブルをエクセルシートにエクスポートするには、以下のように exportAllTables()
関数を使用します。
sqliteToExcel.exportAllTables("table1.xls", new SQLiteToExcel.ExportListener() {
@Override
public void onStart() {
}
@Override
public void onCompleted(String filePath) {
}
@Override
public void onError(Exception e) {
}
});
特定の列を除外したい場合は、その列を配列リストで定義し、それを setExcludeColumns()
関数で設定し、その配列リストをこのメソッドに渡します。
ArrayList<String> columnsToExclude = new ArrayList<String>();
columnsToExclude.add("income_id");
sqliteToExcel.setExcludeColumns(columnsToExclude);
...
sqliteToExcel.export...
Excel から SQLite へのインポート方法
このライブラリでは、エクセルからSQLiteデータベースにインポートすることもできます。その場合、エクスポート時に使用した SqliteToExcel
クラスではなく、ExcelToSQLite
クラスを使用します。
まずは、ExcelToSQLite
をインスタント化して、コンテキストとデータベース名を渡してみましょう。
ExcelToSQLite excelToSQLite = new ExcelToSQLite(getApplicationContext(), "helloworld.db");
エクセルのインポート時にテーブルをドロップするには、次のコードを使用します。
ExcelToSQLite excelToSQLite = new ExcelToSQLite(getApplicationContext(), "helloworld.db", true);
アンドロイドのassetsフォルダからSQLiteデータベースにエクセルシートをエクスポートしたい場合は、importFromAsset()
関数を使い、エクセルファイル名.xls
とインポートリスナーコールバックを渡します。
excelToSQLite.importFromAsset("assetFileName.xls", new ExcelToSQLite.ImportListener() {
@Override
public void onStart() {
}
@Override
public void onCompleted(String dbName) {
}
@Override
public void onError(Exception e) {
}
});
ディレクトリからデータベースにExcelをインポートしたい場合は、importFromFile()
関数を使い、ディレクトリパスを渡します。
excelToSQLite.importFromFile(directory_path, new ExcelToSQLite.ImportListener() {
@Override
public void onStart() {
}
@Override
public void onCompleted(String dbName) {
}
@Override
public void onError(Exception e) {
}
});
完全な例
完全な例を ダウンロードしてください。
参考文献
以下はコードの参考リンクです。
番号 | リンク |
---|---|
1.|コードのダウンロード | |
2.|続きを読む |