Java のライブラリなら、
なんでも Android で使用できると思っていたが。
そうではなかったので、まとめておく。
Open CSV
カンマで分解して、文字列の配列にして、並び順で取得する。
サンプルプログラムは、ここに
https://github.com/ohwada/Android_Samples/tree/master/Csv1
下記のようなヘッダー行があるファイル
は、Java オブジェクトにマッピングする機能もある。
"Name","Quantity"
"Apple", "10"
"Banana", "20"
しかし、Android では、下記のエラーになる。
NoClassDefFoundError: Failed resolution of: Ljava/beans/Introspector
Android に は必要なライブラリがないようです。
参考 : Didn't find class “java.beans.Introspector” when Using OpenCSV to parse csv files
univocity-parsers
CSV ファイルを Java オブジェクトにマッピングする機能がある。
使い方
CSV ファイルのカラムに合わせたJavaクラスを用意する。
アノテーションでカラムと変数の対応を指定する。
@Data
public class Hoge {
@Parsed(field = "Name")
public String name = "";
@Parsed(field = "Quantity")
public int quantity = 0;
CSV ファイルの読み込み
// Assetフォルダーから読み込む場合
Reader reader = new InputStreamReader( getAssets().open(ファイル名) );
CsvParserSettings settings = new CsvParserSettings();
BeanListProcessor<Shopping> rowProcessor = new BeanListProcessor<>(Hoge.class);
settings.setProcessor(rowProcessor);
CsvRoutines routines = new CsvRoutines(settings);
List<Hoge> list
= routines.parseAll( Hoge.class, reader );
サンプルプログラムは、ここに
https://github.com/ohwada/Android_Samples/tree/master/Csv2
Apache Commons CSV
カンマで分解して、文字列の配列にして、並び順で取得する。
サンプルプログラムは、ここに
https://github.com/ohwada/Android_Samples/tree/master/Csv3