我想以 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);
}
}
最佳答案
您需要为列使用分隔符。
使用以下语法:
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 )或...