Android экспорт данных в csv


Я хочу экспортировать некоторые поля из таблицы в моей базе данных SQLite в формате CSV. Я использую библиотеку 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);
}

}

1 4

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 использует точку с запятой (;).
Другие программы могут использовать pipe (|) или tab (\t ) или ...