在我的应用程序中,我使用opencsv将数据从数据库表导出到.csv文件。效果很好。但是客户需要那些没有分隔符的书面行。这可能吗?
我已经考虑并尝试使用CSVParserWriter.DEFAULT_SEPARATOR = '';
更改分隔符,但是char迭代器不能为空。
下面是我的exportData方法
private void exportData() {
DatabaseHelper dbhelper = new DatabaseHelper(getApplicationContext());
File exportDir = new File(Environment.getExternalStorageDirectory(), "kerailymestari_tiedostot");
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, kerailyNimi+".csv");
try
{
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file), CSVParserWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.NO_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END);
SQLiteDatabase db = dbhelper.getReadableDatabase();
Cursor curCSV = db.rawQuery("SELECT * FROM tuotteet WHERE KID = " + kid,null);
//csvWrite.writeNext(curCSV.getColumnNames());
while(curCSV.moveToNext())
{
//Which column you want to exprort
String arrStr[] ={curCSV.getString(1),curCSV.getString(2), curCSV.getString(3), curCSV.getString(4)};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
curCSV.close();
}
catch(Exception sqlEx)
{
Log.e("Results", sqlEx.getMessage(), sqlEx);
}
}
该代码需要更改,以便删除或更改分隔符。还是有更好的解决方案?
答案 0 :(得分:1)
我不明白为什么您会继续使用openCsv。但是,如果要进一步执行此操作,只需从彼此的列上连接字符串并创建一个长度为1的数组即可。
String arrStr[] ={curCSV.getString(1) + curCSV.getString(2) + curCSV.getString(3) + curCSV.getString(4)};
csvWrite.writeNext(arrStr);
请注意使用+
运算符而不是原始,
的串联。