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 ответ:
Для столбцов необходимо использовать разделитель.
Используйте следующий синтаксис:
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 ) или ...