如何将数据从sqlite数据库导出到android应用程序的CSV文件

我在这里看过一些类似的问题,但无法弄清楚如何使这个工作对我的问题。 我已经做了一个锻炼的应用程序,并希望允许用户按下button,将数据库中的数据导出到CSV或Excel文件。任何人都可以给我一些build议,如何去做这件事。 如果我需要再给予信息,请让我知道。 谢谢

这是我的ExportDatabaseCSVTask类:

public class ExportDatabaseCSVTask extends HomeScreen { private final ProgressDialog dialog = new ProgressDialog(ExportDatabaseCSVTask.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 //Headers //database info in here?? 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(ExportDatabaseCSVTask.this, "Export successful!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(ExportDatabaseCSVTask.this, "Export failed!", Toast.LENGTH_SHORT).show(); } } } 

这里是我的DBAdapter类:

 public class DBAdapter { public static final String KEY_ROWID = "_id"; public static final String KEY_TITLE = "title"; public static final String KEY_WORKOUTDATE = "workoutDate"; public static final String KEY_EXERCISE_NOTES = "notes"; private static final String TAG = "WorkoutDBAdapter"; private DatabaseHelper mDBHelper; private SQLiteDatabase mdb; private static final String DATABASE_NAME = "WorkoutDB"; private static final String DATABASE_TABLE = "workouts"; private static final int DATABASE_VERSION = 2; private final Context mCtx; private static final String DATABASE_CREATE = "create table if not exists workouts " + "(_id integer primary key autoincrement, " + "title VARCHAR not null, " + "workoutDate date, " + "notes VARCHAR );"; private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { Log.w(TAG, DATABASE_CREATE); db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS workouts"); onCreate(db); } } public DBAdapter(Context ctx) { this.mCtx = ctx; } public DBAdapter open() throws SQLException { mDBHelper = new DatabaseHelper(mCtx); mdb = mDBHelper.getWritableDatabase(); return this; } public void close() { if (mDBHelper != null) { mDBHelper.close(); } } //---insert a record into the database--- public long insertRecord(String title, String workoutdate, String notes) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_TITLE, title); initialValues.put(KEY_WORKOUTDATE, workoutdate); initialValues.put(KEY_EXERCISE_NOTES, notes); return mdb.insert(DATABASE_TABLE, null, initialValues); } //---retrieves all the records--- public Cursor getAllRecords() { Cursor mCursor = mdb.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_TITLE, KEY_WORKOUTDATE, KEY_EXERCISE_NOTES}, null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } public boolean deleteRow(long rowId) { String where = KEY_ROWID + "=" + rowId; return mdb.delete(DATABASE_TABLE, where, null) != 0; } }