Java Android-从表值生成CSV文件

Java Android-从表值生成CSV文件,java,android,Java,Android,我有一个包含一个表的数据库,我想用这个表的值生成CSV文件 实际上,我想通过电子邮件将此CSV文件作为附件发送。我知道如何在电子邮件intent(ACTION\u SEND)中将文件作为附件发送,但我不知道创建CSV格式文件的过程或方法 请给我一些建议或想法。这看起来很有希望。它将获取任何Java对象并将其转换为CSV文件: 还可以从数据库中检索CSV格式的数据。您可以使用此功能 从此处下载库: 在这里您可以找到jar文件 在您的活动中使用以下内容: CSVWriter writer = n

我有一个包含一个表的数据库,我想用这个表的值生成CSV文件

实际上,我想通过电子邮件将此CSV文件作为附件发送。我知道如何在电子邮件
intent(ACTION\u SEND)
中将文件作为附件发送,但我不知道创建CSV格式文件的过程或方法


请给我一些建议或想法。

这看起来很有希望。它将获取任何Java对象并将其转换为CSV文件:

还可以从数据库中检索CSV格式的数据。

您可以使用此功能

从此处下载库:

在这里您可以找到jar文件

在您的活动中使用以下内容:

CSVWriter writer = null;
try 
{
    writer = new CSVWriter(new FileWriter("/sdcard/myfile.csv"), ',');
    String[] entries = "first#second#third".split("#"); // array of your values
    writer.writeNext(entries);  
    writer.close();
} 
catch (IOException e)
{
    //error
}

这可能会有帮助。我需要“;”作为字段值之间的分隔符。请相应地使用“,”来生成CSV

谢谢, 达珊


添加到@Cocos2dx答案:

从db查询时,您可能有空字段,在我的例子中,我使用控制器获取对象列表中的数据,但如果没有,您应该检查空值或空值,并正确设置它们的格式(或者它们会使您的表看起来很奇怪):


如果使用Kotlin,我建议使用库

只需获取DB表对象列表,遍历所有对象,并将列值逐个添加到CSV行中,如下所示:

csvWriter().open(csvFile) {
    // Header
    writeRow(listOf("[id]", "[name]", "[age]"))

    peopleList.forEachIndexed { index, person ->
        writeRow(listOf(index, person.fullName, person.age))
    }
}

我解释了创建csv文件的整个过程。

我已经访问了您提供的链接,但我不知道如何将其包含在我的android应用程序中。请让我知道,Thanx为了您的快速响应,我想您的意思是我应该包括这个CSVWriter类,然后我应该使用这个CSVWriter类,是吗?Thanx vikas,我已经实现并得到了与您提到的相同的解决方案。顺便说一句,谢谢你的及时支持。@VikasPatidar我怎样才能不间断地保存数据?我不断地生成数据,直到我不调用
close()
它不保存为止。在添加com.opencsv:opencsv:4.0时,我对CSVWriter的commons日志依赖项发出了渐变警告。
String[] details = { 
        replaceNull(someObject.getId()),
        replaceNull(someObject.getName())
};


public static String replaceNull(String input) {
    return ((input == null || input.isEmpty()) ? " " : input);
}

writer.writeNext(details);
csvWriter().open(csvFile) {
    // Header
    writeRow(listOf("[id]", "[name]", "[age]"))

    peopleList.forEachIndexed { index, person ->
        writeRow(listOf(index, person.fullName, person.age))
    }
}