Androidエンジニアのみなさんこんにちは!
突然ですが、みなさんはこういうドキュメントを渡されたことありませんか?
エクセルに記入されたデータをもとに、アプリに内容を反映していく、よくあるパターンだと思います。
エンジニアとしては、こういうint型やString型が入り混じった複数のデータは、どうやって取り込むか悩ましいものです。
人によって色々やり方はあるでしょうが、普段私がやっているやり方を解説しようと思います。
1.エクセルの関数で横一列でまとめる
まず、エクセルのCONCATENATE()関数で、複数のセルの内容を結合させた文字列をつくります。
空白のセルで「=CONCATENATE( ○○ & △△ & □□ &……)」と入力すると、○○と△△と□□が結合されます。
○○、△△、□□にはそれぞれ、セル番号(A5、B3など)を入れたり、「” (ダブルクオーテーション)」で囲って任意の文字列を入れます。
例えば「=CONCATENATE( A1 & “←セルA1の内容 セルB2の内容→” & B2)」と入力すると、「○○←セルA1の内容 セルB2の内容→□□」と表示されます。
これを応用して、
=CONCATENATE( “chara_data.add(new ModelChara(” & B3 & “, ” & “””” & C3 & “””” & “, ” & D3 & “, ” & “””” & E3 & “””” & “, ” & “””” & F3 & “””” & “));” )
と入れます。
セルの位置や、前後に入れる文字列は内容によって違ってくると思います。
注意してほしいのは、「”(ダブルクオーテーション)」を文字としてそのまま結合したい場合は、「””””」と4つかたまりで入力しなくてはいけない点です。
さて、上記の関数を実行すると↓のような文字列に結合されます。
なんだかこのままEclipseにコピペできそうな形になりましたね!
2.全てのデータに関数を適用する
ここからはExcelの使い方の勉強です。
1.の工程で出来た1行の関数式を、そのまま全てのデータに適用したいですよね?
そういうときも下記の要領で簡単にできます。
1.の関数を書き込んだセルの枠の右下あたりにマウスカーソルを動かしてください。
カーソルのアイコンが「+」に変化しますね。この状態でクリックして……
クリックしっぱなしで下にぐぐぐっとマウスを動かします。
そして、テキトーな位置でクリックを離すと……
この通り!
関数をコピーして、かつセルの参照位置を行に対応して結合してくれています。
3.変換した文字列をコピペしてEclipseに貼りつける(でもその前に……)
それでは、変換した文字列をコピペしてみましょう!
セルを選択して、右クリックでコピーします。
意気揚々とEclipseに貼りつけてください。
あるぇー? なんかカツオの行が改行されてるし、ダブルクオーテーション増えてるよ?
これは、カツオの備考欄の文章に改行が含まれているためです。
エクセルの改行コードとAndroidの改行コードは違うため、きちんと反映されていないのです。
いったんエクセルの改行コードを置換しないといけません。
エクセルで「ctrl + F」を押すと、検索と置換ウィンドウが表示されます。
置換タブを開いて、検索する文字列で「ctrl + J」を押してください。
エクセルの改行コードは「ctrl + J」です。欄に何も表示されませんが、きちんと入っているので安心してください。
そして、置換後の文字列には「\n」を入れましょう。
これで置換を実行すると、無事に改行が「\n」に置換されました!
この状態でもう一度コピペすると……
バッチリです!
4.パターンが複数ある置換は、エクセルの置換や関数ではなく、Eclipseでそのままやっちゃった方が簡単
あと一歩です!
性別の欄をboolean型に変換します。(本来なら性別はint型で格納するのが正しいやり方ですが、今回は色んな型をまとめてエクセルから取り込む方法の解説として書いておりますので、便宜上……)
複数の置換パターンがある場合は、いったんEclipseにコピペしたあとで置換した方が簡単で確実で早いです。
このあたりは普段からEclipseを使っている人なら簡単ですよね。
「ctrl + F」で検索・置換ウィンドウが開くので、よしなにしてください。
これでエクセルで作られたデータの取り込みが完了しました!
次回の記事では、このデータを扱いやすくクラスとして管理する方法を解説します。