我想以CSV
格式从我的SQLite数据库中的表中导出一些字段。我正在使用库opencsv-2.4
。
工作,但表的所有列都存储在电子表格的单个列中,而必须分开。
这是我的方法:
File exportDir = new File(Environment.getExternalStorageDirectory(), "");
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, "csvname.csv");
try
{
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
SQLiteDatabase db = mHelper.getReadableDatabase();
Cursor curCSV = db.rawQuery("SELECT * FROM Table",null);
csvWrite.writeNext(curCSV.getColumnNames());
while(curCSV.moveToNext())
{
//Which column you want to exprort
String arrStr[] ={curCSV.getString(0),curCSV.getString(1), curCSV.getString(2)};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
curCSV.close();
}
catch(Exception sqlEx)
{
Log.e("MainActivity", sqlEx.getMessage(), sqlEx);
}
}
答案 0 :(得分:1)
您需要为列使用分隔符。
使用以下语法:
CSVWriter writer = new CSVWriter(new FileWriter(file), ",", "", "\n");
而不是:
CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
这会将逗号(,)设置为字段分隔符,并将换行符( \ n )设置为行终止符
或者只是
CSVWriter writer = new CSVWriter(new FileWriter(file), ",");
这会将逗号(,)设置为字段分隔符 Excel使用分号(; ) 其他软件可能使用管道( | )或标签( \ t )或...