How to implement Export sqlite To excel/csv file in android? How to implement Export sqlite To excel/csv file in android? android android

How to implement Export sqlite To excel/csv file in android?


Guys here is answer that I have implemented successfully

//new async task for file export to csvprivate class ExportDatabaseCSVTask extends AsyncTask<String, String, Boolean> {    private final ProgressDialog dialog = new ProgressDialog(SearchResultActivity.this);    boolean memoryErr = false;    // to show Loading dialog box    @Override    protected void onPreExecute() {        this.dialog.setMessage("Exporting database...");        this.dialog.show();    }    // to write process     protected Boolean doInBackground(final String... args) {        boolean success = false;        String currentDateString = new SimpleDateFormat(Constants.SimpleDtFrmt_ddMMyyyy).format(new Date());        File dbFile = getDatabasePath("HLPL_FRETE.db");        Log.v(TAG, "Db path is: " + dbFile); // get the path of db        File exportDir = new File(Environment.getExternalStorageDirectory() + File.separator + Constants.FileNm.FILE_DIR_NM, "");        long freeBytesInternal = new File(getApplicationContext().getFilesDir().getAbsoluteFile().toString()).getFreeSpace();                   long megAvailable = freeBytesInternal / 1048576;        if (megAvailable < 0.1) {                           System.out.println("Please check"+megAvailable);            memoryErr = true;                       }else {                         exportDirStr = exportDir.toString();// to show in dialogbox            Log.v(TAG, "exportDir path::" + exportDir);            if (!exportDir.exists()) {                exportDir.mkdirs();            }               try {                List<SalesActivity> listdata = salesLst;                SalesActivity sa = null;                String lob = null;                for (int index = 0; index < listdata.size();) {                    sa = listdata.get(index);                    lob = sa.getLob();                    break;                }                if (Constants.Common.OCEAN_LOB.equals(lob)) {                    file = new File(exportDir, Constants.FileNm.FILE_OFS + currentDateString + ".csv");                } else {                    file = new File(exportDir, Constants.FileNm.FILE_AFS + currentDateString + ".csv");                }                file.createNewFile();                CSVWriter csvWrite = new CSVWriter(new FileWriter(file));                // this is the Column of the table and same for Header of CSV                // file                if (Constants.Common.OCEAN_LOB.equals(lob)) {                    csvWrite.writeNext(Constants.FileNm.CSV_O_HEADER);                }else{                    csvWrite.writeNext(Constants.FileNm.CSV_A_HEADER);                }                String arrStr1[] = { "SR.No", "CUTSOMER NAME", "PROSPECT", "PORT OF LOAD", "PORT OF DISCHARGE" };                csvWrite.writeNext(arrStr1);                if (listdata.size() > 0) {                    for (int index = 0; index < listdata.size(); index++) {                        sa = listdata.get(index);                        String pol;                        String pod;                        if (Constants.Common.OCEAN_LOB.equals(sa.getLob())) {                            pol = sa.getPortOfLoadingOENm();                            pod = sa.getPortOfDischargeOENm();                        } else {                            pol = sa.getAirportOfLoadNm();                            pod = sa.getAirportOfDischargeNm();                        }                        int srNo = index;                        String arrStr[] = { String.valueOf(srNo + 1), sa.getCustomerNm(), sa.getProspectNm(), pol, pod };                        csvWrite.writeNext(arrStr);                    }                    success = true;                }                csvWrite.close();            } catch (IOException e) {                Log.e("SearchResultActivity", e.getMessage(), e);                return success;            }        }        return success;    }    // close dialog and give msg    protected void onPostExecute(Boolean success) {        if (this.dialog.isShowing()) {            this.dialog.dismiss();        }        if (success) {            dialogBox(Constants.Flag.FLAG_EXPRT_S);        } else {                            if (memoryErr==true) {                dialogBox(Constants.Flag.FLAG_MEMORY_ERR);            } else {                dialogBox(Constants.Flag.FLAG_EXPRT_F);            }        }    }}


this is my answer: And this works !Excel file is the same as a .csv file.Step 1: download this jar file https://code.google.com/p/opencsv/downloads/detail?name=opencsv-2.4.jar&can=2&q=

Step 2:

private class ExportDatabaseCSVTask extends AsyncTask<String ,String, String>{    private final ProgressDialog dialog = new ProgressDialog(MainActivity.this);    @Override    protected void onPreExecute() {        this.dialog.setMessage("Exporting database...");        this.dialog.show();    }    protected String doInBackground(final String... args){        File exportDir = new File(Environment.getExternalStorageDirectory(), "");        if (!exportDir.exists()) {            exportDir.mkdirs();        }        File file = new File(exportDir, "ExcelFile.csv");        try {            file.createNewFile();            CSVWriter csvWrite = new CSVWriter(new FileWriter(file));            //data                 ArrayList<String> listdata= new ArrayList<String>();            listdata.add("Aniket");            listdata.add("Shinde");            listdata.add("pune");            listdata.add("anything@anything");            //Headers            String arrStr1[] ={"First Name", "Last Name", "Address", "Email"};            csvWrite.writeNext(arrStr1);            String arrStr[] ={listdata.get(0), listdata.get(1), listdata.get(2), listdata.get(3)};            csvWrite.writeNext(arrStr);               csvWrite.close();            return "";        }        catch (IOException e){            Log.e("MainActivity", e.getMessage(), e);            return "";        }    }    @SuppressLint("NewApi")    @Override    protected void onPostExecute(final String success) {        if (this.dialog.isShowing()){            this.dialog.dismiss();        }        if (success.isEmpty()){            Toast.makeText(MainActivity.this, "Export successful!", Toast.LENGTH_SHORT).show();        }        else {            Toast.makeText(MainActivity.this, "Export failed!", Toast.LENGTH_SHORT).show();        }    }} 

Write Async task in your .java file

Step3: Add call this task

ExportDatabaseCSVTask task=new ExportDatabaseCSVTask();task.execute();

ExcelFile.csv file will be created in your sdcard.


ExportDatabaseCSVTask:

 public class ExportDatabaseCSVTask extends AsyncTask<String, Void, Boolean> {        private final ProgressDialog dialog = new ProgressDialog(MainActivity.this);        @Override        protected void onPreExecute() {            this.dialog.setMessage("Exporting database...");            this.dialog.show();        }        protected Boolean doInBackground(final String... args) {            String currentDBPath = "/data/"+ "your Package name" +"/databases/abc.db";            File dbFile = getDatabasePath(""+currentDBPath);            System.out.println(dbFile);  // displays the data base path in your logcat            File exportDir = new File(Environment.getExternalStorageDirectory(), "/your Folder Name/");            if (!exportDir.exists()) { exportDir.mkdirs(); }            File file = new File(exportDir, "myfile.csv");            try {                file.createNewFile();                CSVWriter csvWrite = new CSVWriter(new FileWriter(file));                Cursor curCSV = simpledb.rawQuery("select * from " + tablename,null);                csvWrite.writeNext(curCSV.getColumnNames());                while(curCSV.moveToNext()) {                    String arrStr[]=null;                    String[] mySecondStringArray = new String[curCSV.getColumnNames().length];                    for(int i=0;i<curCSV.getColumnNames().length;i++)                    {                        mySecondStringArray[i] =curCSV.getString(i);                    }                    csvWrite.writeNext(mySecondStringArray);                }                csvWrite.close();                curCSV.close();                return true;            } catch (IOException e) {                Log.e("MainActivity", e.getMessage(), e);                return false;            }        }        protected void onPostExecute(final Boolean success) {            if (this.dialog.isShowing()) { this.dialog.dismiss(); }            if (success) {                 Toast.makeText(MainActivity.this, "Export successful!", Toast.LENGTH_SHORT).show();            } else {                Toast.makeText(MainActivity.this, "Export failed", Toast.LENGTH_SHORT).show();            }        }    }

CSVWriter:

 public class CSVWriter {private PrintWriter pw;private char separator;private char quotechar;private char escapechar;private String lineEnd;/** The character used for escaping quotes. */public static final char DEFAULT_ESCAPE_CHARACTER = '"';/** The default separator to use if none is supplied to the constructor. */public static final char DEFAULT_SEPARATOR = ',';/** * The default quote character to use if none is supplied to the * constructor. */public static final char DEFAULT_QUOTE_CHARACTER = '"';/** The quote constant to use when you wish to suppress all quoting. */public static final char NO_QUOTE_CHARACTER = '\u0000';/** The escape constant to use when you wish to suppress all escaping. */public static final char NO_ESCAPE_CHARACTER = '\u0000';/** Default line terminator uses platform encoding. */public static final String DEFAULT_LINE_END = "\n";/** * Constructs CSVWriter using a comma for the separator. * * @param writer *            the writer to an underlying CSV source. */public CSVWriter(Writer writer) {    this(writer, DEFAULT_SEPARATOR, DEFAULT_QUOTE_CHARACTER,        DEFAULT_ESCAPE_CHARACTER, DEFAULT_LINE_END);}/** * Constructs CSVWriter with supplied separator, quote char, escape char and line ending. * * @param writer *            the writer to an underlying CSV source. * @param separator *            the delimiter to use for separating entries * @param quotechar *            the character to use for quoted elements * @param escapechar *            the character to use for escaping quotechars or escapechars * @param lineEnd *            the line feed terminator to use */public CSVWriter(Writer writer, char separator, char quotechar, char escapechar, String lineEnd) {    this.pw = new PrintWriter(writer);    this.separator = separator;    this.quotechar = quotechar;    this.escapechar = escapechar;    this.lineEnd = lineEnd;}/** * Writes the next line to the file. * * @param nextLine *            a string array with each comma-separated element as a separate *            entry. */public void writeNext(String[] nextLine) {    if (nextLine == null)        return;    StringBuffer sb = new StringBuffer();    for (int i = 0; i < nextLine.length; i++) {        if (i != 0) {            sb.append(separator);        }        String nextElement = nextLine[i];        if (nextElement == null)            continue;        if (quotechar !=  NO_QUOTE_CHARACTER)            sb.append(quotechar);        for (int j = 0; j < nextElement.length(); j++) {            char nextChar = nextElement.charAt(j);            if (escapechar != NO_ESCAPE_CHARACTER && nextChar == quotechar) {                sb.append(escapechar).append(nextChar);            } else if (escapechar != NO_ESCAPE_CHARACTER && nextChar == escapechar) {                sb.append(escapechar).append(nextChar);            } else {                sb.append(nextChar);            }        }        if (quotechar != NO_QUOTE_CHARACTER)            sb.append(quotechar);    }    sb.append(lineEnd);    pw.write(sb.toString());}/** * Flush underlying stream to writer. * * @throws IOException if bad things happen */public void flush() throws IOException {    pw.flush();}/** * Close the underlying stream writer flushing any buffered content. * * @throws IOException if bad things happen * */public void close() throws IOException {    pw.flush();    pw.close();} }