gpt4 book ai didi

java - 在 Java 中创建 CSV 文件

转载 作者:行者123 更新时间:2023-12-02 03:11:28 24 4
gpt4 key购买 nike

我需要创建特定格式的 CSV 文件。这是格式。

“ROWHEAD”,2016/09/13 03:24:42 -0700,”A”,”BCDE”,002,
“SECHEAD”,2016/09/12 00:00:00 -0700,2016/09/12 23:59:59 -0700,”BCDE”

“COLHEAD”,”Col A”,”Col B”,”Col C”,”Col D”,”Col E”,”Col F”
“SECBODY”,”val A”,”val B”,”val C”,”val D”,”val E”,”val F”
“SECBODY”,”val A”,”val B”,”val C”,”val D”,”val E”,”val F”
“SECBODY”,”val A”,”val B”,”val C”,”val D”,”val E”,”val F”
“SECBODY”,”val A”,”val B”,”val C”,”val D”,”val E”,”val F”

“SECFOOT”,”XXX”,0,0,0,0,”YY”,0,”ZZ”,0,189
“SECCOUNT”,1
"ROWFOOT”,”XXX”,0,0,0,0,”YY”,0,”ZZ”,0,189

我尝试过使用普通的文件编写器方法,但这无法帮助我实现这一目标。我还尝试了 openCSV API 来实现同样的目的,但这甚至没有多大帮助。

如何创建一个包含此类页眉和页脚值的 CSV 文件?

最佳答案

获取uniVocity-parsers来处理这个问题。它有一个 OutputValueSwitch,它将匹配每行特定列中的值,以确定要使用的 RowProcessor

例如,如果您的输入行是从 java beans 生成的(它可能会这样做),而其他一些行是对象数组的普通列表:

    OutputValueSwitch writerSwitch = new OutputValueSwitch(0); //row identifiers go at column 0

// If the value is "ROWHEAD", we want to use an BeanWriterProcessor. You can provide field names to be associated with the fields in the class.
writerSwitch.addSwitchForValue("ROWHEAD", new BeanWriterProcessor(RowHead.class));

writerSwitch.addSwitchForValue("SECHEAD", new BeanWriterProcessor(SecHead.class));

// If the value is "SECBODY", a ObjectRowWriterProcessor will be used. Let's assume you are writing object arrays here
writerSwitch.addSwitchForValue("SECBODY", new ObjectRowWriterProcessor());
//...and so on.

//Configure the CSV writer here
CsvWriterSettings settings = new CsvWriterSettings();
// the writer should use the switch defined above
settings.setRowWriterProcessor(writerSwitch);

settings.getFormat().setLineSeparator("\n");
settings.setHeaderWritingEnabled(false);
//etc

//Create the CSV writer
CsvWriter writer = new CsvWriter(new File("/path/to/your.csv"), "UTF-8", settings);

writer.processRecord(new RowHead()); //writing bean
writer.processRecord(new SecHead()); //writing the other bean
writer.processRecord(new Object[]{"SECBODY", "Value 1", "Value 2", "etc"}); //writing an array

writer.close();

您还可以使用 map 作为输入行。有关完整工作示例,请参阅 thisthis

您可以使用这个库做任何事情,我希望它对您有所帮助。

披露:我是这个库的作者。它是开源且免费的(Apache V2.0 许可证)。

关于java - 在 Java 中创建 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40985862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com