2011-01-08 24 views
10

私は1つのテーブルを含むデータベースを持っています。私はこのテーブルの値でCSVファイルを生成したいと思います。Android - テーブル値からCSVファイルを生成

実際、このCSVファイルを添付ファイルとして電子メールで送付したいと思います。私は電子メールの添付ファイルとしてファイルを送信することについて知っていますintent(ACTION_SEND)、しかし私は作成する方法や私がCSV形式のファイルを作成する方法を知らない。

私に提案やアイデアを教えてください。

答えて

32

ここからこの

ダウンロード用のライブラリをopencsvを使用することができます。

http://sourceforge.net/projects/opencsv/

をこの中で、あなたがjarファイルを見つけることができます。あなたの活動の使用インサイド

この:

CSVWriter writer = null; 
try 
{ 
    writer = new CSVWriter(new FileWriter("/sdcard/myfile.csv"), ','); 
    String[] entries = "first#second#third".split("#"); // array of your values 
    writer.writeNext(entries); 
    writer.close(); 
} 
catch (IOException e) 
{ 
    //error 
} 
+0

あなたが提供したリンクを訪問しましたが、私はこれを私のAndroidアプリケーションにどのように含めるべきかを知りませんでした。私に教えてください、あなたの迅速な応答のためのThanx –

+0

私はあなたが私はこのCSVWriterクラスを含める必要があると思うし、私はこのCSVWriterクラスで再生する必要があります、そうですか? –

+0

@PM:はい、私は答えを更新しました –

3

これは本当に有望です。これは、任意のJavaオブジェクトを取得し、CSVファイルに変換します:

http://supercsv.sourceforge.net/

また、CSV形式でデータベースからデータを取得できる可能性があります。

11

このhelpfull.Iが必要になることがあります ';'フィールド値の間のセパレータとして。 CSV生成には、 '、'を使用してください。

おかげで、 ダルシャン

private void exportTheDB() throws IOException 
{ 
     File myFile; 
    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy"); 
    String TimeStampDB = sdf.format(cal.getTime()); 

    try { 

     myFile = new File(extStorageDirectory+"/Export_"+TimeStampDB+".csv"); 
     myFile.createNewFile(); 
     FileOutputStream fOut = new FileOutputStream(myFile); 
     OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
     myOutWriter.append("Start time;End time;Elapse;Sports type"); 
     myOutWriter.append("\n"); 
     sampleDB = this.openOrCreateDatabase(DB_NAME,MODE_PRIVATE, null); 

     Cursor c = sampleDB.rawQuery("SELECT * FROM Sport_Records ", null); 

     if (c != null) { 
      if (c.moveToFirst()) { 
       do { 


        String start_Time = c.getString(c.getColumnIndex("startTimeDate")); 
        String end_Time = c.getString(c.getColumnIndex("endTimeDate")); 
        String elapse_Time = calculateTimeDifferece(end_Time, start_Time); 
        String sport_Name = c.getString(c.getColumnIndex("label")); 

        myOutWriter.append(start_Time+";"+end_Time+";"+elapse_Time+";"+sport_Name); 
        myOutWriter.append("\n"); 
       } 

       while (c.moveToNext()); 
      } 

      c.close(); 
      myOutWriter.close(); 
      fOut.close(); 

     } 
    } catch (SQLiteException se) 
    { 
     Log.e(getClass().getSimpleName(),"Could not create or Open the database"); 
    } 

    finally { 

     sampleDB.close(); 

    } 






} 
+0

文字列にスペースが含まれていると動作しますか? – PankajAndroid

1

答えCocos2dx @に追加するには:

あなたはヌルフィールドを有することができるDBから照会、私の場合は、オブジェクト内のデータをフェッチするためにコントローラを使用しますあなたがテーブルを奇妙に見せることができるか、またはテーブルが奇妙に見えるようにしてください):

関連する問題