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

前端 未结 5 833
無奈伤痛
無奈伤痛 2020-11-28 22:57

I am developing android app where SQlite as a database.I want to export certain result from DB in to excel file format programatically, want to store that excel to local dev

5条回答
  •  南笙
    南笙 (楼主)
    2020-11-28 23:34

    ExportDatabaseCSVTask:

     public class ExportDatabaseCSVTask extends AsyncTask {
            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

    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();
    }
    
     }
    

提交回复
热议问题