Android: genera archivo CSV de valores de tabla
Tengo una base de datos que contiene una tabla, quiero generar el archivo CSV con los valores de esta tabla.
En realidad, quiero enviar un correo electrónico a este archivo CSV como un archivo adjunto. Sé que enviar el archivo como un archivo adjunto en intent(ACTION_SEND)
correo electrónico intent(ACTION_SEND)
, pero no sé el procedimiento de creación o el método por el que puedo crear archivo con formato CSV.
- Android: para medir el tiempo entre los dos clics de botón
- Adición de una imagen de fondo a un diseño xml de fondo
- Error al ejecutar JAVA aunque la ruta se establezca en Windows 8 Enterprise - Cordova
- Ordenación de símbolo de moneda de Android
- Hilo de Java checkAccess
Por favor déme sugerencias o ideas.
- Android SDK de repente dejó de funcionar
- OnDraw eficiente con mapas de bits y aceleración por hardware
- android ImageView en ViewPager - implementar el gesto táctil zoom de la imagen
- Cómo implementar una cola de runnables
- Trabajo POST Multipart Solicitud con Volley y sin HttpEntity
- Al ofuscar con ProGuard, ¿hace -keepattributes SourceFile, LineNumberTable hacer el apk resultante más fácil de ingeniería inversa?
- Denominación del ID en las aplicaciones de Android
- Android Cambia el texto de TextView de otra clase
Puedes usar opencsv
para esto
Descargue la biblioteca de aquí:
http://sourceforge.net/projects/opencsv/
En esto se puede encontrar el archivo jar.
Dentro de su actividad use esto:
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 }
Esto podría ser útil. Necesitaba ";" Como separador entre los valores de feild. Por favor, utilice ',' en consecuencia para la generación de CSV.
Gracias, Darshan
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(); } }
Esto parece realmente prometedor. Tomará cualquier objeto Java y lo convertirá en un archivo CSV:
http://supercsv.sourceforge.net/
También podría ser posible recuperar los datos de la base de datos en formato CSV.
Añadir a @ Cocos2dx respuesta:
Al consultar de db puede tener campos nulos, en mi caso yo uso un controlador para buscar los datos en una lista de objetos, pero si usted no debe comprobar si hay valores nulos o vacíos y formatearlos correctamente (o pueden hacer Tu mesa se ve raro):
String[] details = { replaceNull(someObject.getId()), replaceNull(someObject.getName()) }; public static String replaceNull(String input) { return ((input == null || input.isEmpty()) ? " " : input); } writer.writeNext(details);
- Cómo agregar un degradado a los botones en android a través de xml?
- Deshabilitar el resaltado de clics de InfoWindows?