Cómo implementar Exportar sqlite Para sobresalir / archivo csv en android?

Estoy desarrollando la aplicación android donde SQlite como una base de datos.Quiero exportar determinado resultado de DB en Excel para el formato de archivo programaticamente, quiero almacenar que sobresalir a la ruta de dispositivo local que he encontrado a través de enlaces

Entonces, ¿cuál es el procedimiento exacto para implementar Exportar a Excel para aplicaciones Android?

Chicos aquí es la respuesta que he implementado con éxito

//new async task for file export to csv private 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); } } } } 

Esta es mi respuesta: ¡Y esto funciona! El archivo de Excel es el mismo que un archivo .csv. Paso 1: descargue este archivo jar https://code.google.com/p/opencsv/downloads/detail?name=opencsv-2.4.jar&can=2&q=

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

Escribir tarea asíncrona en el archivo .java

Paso 3: Añadir llamada a esta tarea

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

ExcelFile.csv archivo ExcelFile.csv se creará en su tarjeta SD.

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(); } } 
  • Cómo comparar representaciones de cadena de dobles si termina en .00
  • ¿Cuál es la sintaxis de "no igual" en SQLite?
  • ¿Cómo almacenar los datos de edittext a Android base de datos sqlite?
  • ¿Cómo puedo hacer un contexto de base de datos SQLite nulo en OnDestroy () en Android?
  • Consulta de eliminación de Android
  • ¿Cómo agregar y utilizar la extensión de carga de Sqlite en android?
  • ¿Podemos usar Guid como clave principal en la base de datos de SQL Server?
  • SQLite es sin tipo?
  • Un comportamiento extraño para reguelr sqlite operación en android
  • ¿Cómo puedo almacenar datos de las pocas aplicaciones en un solo lugar?
  • ¿Detectando la transacción olvidada de SQLite en Android usando StrictMode?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.