2011-01-08 12 views
10

मेरे पास एक टेबल वाला डेटाबेस है, मैं इस तालिका के मानों के साथ सीएसवी फ़ाइल जेनरेट करना चाहता हूं।एंड्रॉइड - तालिका मूल्यों से सीएसवी फ़ाइल जेनरेट करें

असल में, मैं इस सीएसवी फ़ाइल को अनुलग्नक के रूप में ईमेल करना चाहता हूं। मैं ईमेल intent(ACTION_SEND) में एक अनुलग्नक के रूप में फ़ाइल भेजने के बारे में जानता हूं, लेकिन मुझे बनाने की विधि या विधि नहीं है जिसके द्वारा मैं CSV स्वरूपित फ़ाइल बना सकता हूं।

कृपया मुझे सुझाव या विचार दें।

उत्तर

32

आप यहाँ से लाइब्रेरी के लिए इस

डाउनलोड opencsv उपयोग कर सकते हैं:

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

इस में आप जार फ़ाइल पा सकते हैं।

अपनी गतिविधि उपयोग के अंदर इस:

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

मेरे पास है आपके द्वारा प्रदान किए गए लिंक का दौरा किया, लेकिन मुझे नहीं पता था कि मैं इसे अपने एंड्रॉइड एप्लिकेशन में कैसे शामिल करूं। कृपया मुझे बताएं, आपकी त्वरित प्रतिक्रिया –

+0

के लिए Thanx मुझे लगता है कि आपका मतलब है कि मुझे यह CSVWriter कक्षा शामिल करनी चाहिए और फिर मुझे इस CSVWriter कक्षा के साथ खेलना चाहिए, है ना? –

+0

@ पीएम: हाँ, मैंने अपना जवाब –

3

यह वास्तव में आशाजनक दिखता है। यह किसी भी जावा वस्तु लेने के लिए और यह एक CSV फ़ाइल में परिवर्तित कर देंगे:

http://supercsv.sourceforge.net/

यह भी सीएसवी प्रारूप में डेटाबेस से डेटा पुनः प्राप्त करना संभव हो सकता है।

11

ऐसा इसलिए हो सकता helpfull.I जरूरत ';' फील्ड मूल्यों के बीच में सेपरेटर के रूप में। सीएसवी पीढ़ी के लिए कृपया ',' का प्रयोग करें।

धन्यवाद, दर्शन

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 आप अशक्त क्षेत्रों में हो सकता है की क्वेरी, मेरे मामले में मैं एक नियंत्रक का उपयोग एक वस्तु में डेटा प्राप्त करने का सूची, लेकिन यदि आप नहीं करते हैं तो आपको शून्य या खाली मानों की जांच करनी चाहिए और उचित प्रारूप (या वे आपकी तालिका को अजीब लग सकते हैं):

String[] details = { 
     replaceNull(someObject.getId()), 
     replaceNull(someObject.getName()) 
}; 


public static String replaceNull(String input) { 
    return ((input == null || input.isEmpty()) ? " " : input); 
} 

writer.writeNext(details); 
संबंधित मुद्दे