【问题标题】:Generating CSV from objects list从对象列表生成 CSV
【发布时间】:2012-06-12 08:06:46
【问题描述】:

我想从自定义对象列表中生成一个 CSV 文件。

我有一个抽象类:

public abstract class MyClass{
    public static final String SEPARATOR = ";";

    // many private variables

    @Override
    public String toString(){
        // return all my variables values separated by SEPARATOR
    }
}

以及从这个类继承的几个具体类。 我想只在这个类中实现toString() 方法,而不在每个具体类中重新实现。

是否有任何有用的库来实现这一点,还是我必须为每个类手动实现toString() 方法?我应该使用反射吗?

【问题讨论】:

标签: java reflection csv


【解决方案1】:

有一个类似于您的需求的库,名称为opencsv

【讨论】:

    【解决方案2】:

    使用OpenCSV。它是一个用于解析和编写 CSV 文件的库,可以处理引号、不同的分隔符和多行值。

    【讨论】:

      【解决方案3】:

      反射方法的问题是 1)您可以轻松地在您的具体类中获得您不希望在 csv 表中出现的字段。 2) 你如何为你的 csv 表生成一个标题?

      另外,我发现将 csv 生成逻辑放入自定义对象中是不好的设计,当然这取决于它们所代表的内容(毫无疑问,也可能有支持您的方法的原因)。考虑为此使用单独的类。

      是的,您可以(甚至必须)使用反射,不,我不知道是否已经存在为您处理此问题的库。一旦您在 CSV 表中拥有所需的值,其他人提到的 OpenCSV 就可以完成将所有内容放在一起的工作。

      看看 Class.getFields(), Field.setAccessible()(如果你需要的话),应该可以。使用反射其实并不难。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-01
        • 2016-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多