How to create a .csv on android

After searching lots over internet i got solution of creating Csv file inside android App,
internal storage (without SD Card), So i decided to share with others how to create csv file in android & How to attach it with mail.

First Download Opencsv.jar library and add to your android project. https://sourceforge.net/projects/opencsv/files/opencsv/

Add the implementation directly (no download of .jar)

implementation 'com.opencsv:opencsv:4.6' // Here is opencsv library 

Or add jar file in android project :

  1. Change Android Studio file structure Android to Project ( At Top Left below of Project Name Android,change to Project)
  2. Copy opencsv.jar file and paste in libs folder.
  3. Right click opencsv.jar file and hit Add as library.

Add permission to Menifest.xml( If device API is 23 or greater Check RunTime Permission)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Open build.gradle (Module:app) and check it added :

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.android.support:recyclerview-v7:26.+'
    testCompile 'junit:junit:4.12'
    implementation files('libs/opencsv-4.1.jar') // Here is opencsv library added to project when using .jar
}

Now coding part : Creating csv file and inserting data into it.

 String csv = (Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyCsvFile.csv"); // Here csv file name is MyCsvFile.csv


 //by Hiting button csv will create inside phone storage.
 buttonAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            CSVWriter writer = null;
                try {
                    writer = new CSVWriter(new FileWriter(csv));

                    List<String[]> data = new ArrayList<String[]>();
                    data.add(new String[]{"Country", "Capital"});
                    data.add(new String[]{"India", "New Delhi"});
                    data.add(new String[]{"United States", "Washington D.C"});
                    data.add(new String[]{"Germany", "Berlin"});

                    writer.writeAll(data); // data is adding to csv 

                    writer.close();
                    callRead();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

Now if you want to view your csv file inside the android follow below steps:

  1. Go to File Manager/ My Files to your phone.
  2. Go to internal storage/ Local , just scroll you will get your csv file.
  3. If csv file is not opening in your device install Csv Viewer from Play Store.

Now, If you want to attach this csv file to your app with attachment

Here is the code for attachment of csv file in mail :

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent emailIntent = new Intent(Intent.ACTION_SEND);
                emailIntent.setType("text/plain");
                emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"email@example.com"});
                emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
                emailIntent.putExtra(Intent.EXTRA_TEXT, "body text");

                File file = new File(csv);
                Uri uri = Uri.fromFile(file);
                emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
                startActivity(Intent.createChooser(emailIntent, "Pick an Email provider"));
            }
        });

Leave a Comment

tech