我想以 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 )或...

10-07 13:17
查看更多