Java CSV写作

我目前正试图写入数据到excel的报告。 我可以将数据写入csv文件,但是它不会以我想要的顺序在Excel中出现。 我需要在最佳和最糟糕的情况下在每列中打印数据,而不是在平均值下打印。 这里是相关的代码,任何帮助将不胜感激:

String [] Fitness = "Average fitness#Worst fitness #Best Fitness".split("#"); writer.writeNext(Fitness); //takes data from average fitness and stores as an int int aFit = myPop.individuals[25].getFitness(); //converts int to string String aFit1 = Integer.toString(aFit); //converts string to string array String aFit2 [] = aFit1.split(" "); //writes to csv writer.writeNext(aFit2); //String [] nextCol = "#".split("#"); int wFit = myPop.individuals[49].getFitness(); String wFit1 = Integer.toString(wFit); String wFit2 [] = wFit1.split(" "); writer.writeNext(wFit2); int bFit = myPop.individuals[1].getFitness(); String bFit1 = Integer.toString(bFit); String bFit2 [] = bFit1.split(" "); writer.writeNext(bFit2); 

在这里input图像说明

从CSVWriter.html#writeNext(java.lang.String [])的文档

public void writeNext(String[] nextLine) – 将下一行写入文件。

要提供的string数组是

一个string数组,每个逗号分隔的元素作为一个单独的条目。

您正在编写3个单独的行而不是1个,并且您编写的每行都包含一个具有单个条目的数组。

 writer.writeNext(aFit2); writer.writeNext(wFit2); writer.writeNext(bFit2); 

解决scheme:创build一个包含所有3个条目(列值)的单个数组,并将其单独写入一行。

我想你应该每行数据调用一次“writeNext”方法:

 String [] Fitness = "Average fitness#Worst fitness #Best Fitness".split("#"); writer.writeNext(Fitness); int aFit = myPop.individuals[25].getFitness(); String aFit1 = Integer.toString(aFit); int wFit = myPop.individuals[49].getFitness(); String wFit1 = Integer.toString(wFit); int bFit = myPop.individuals[1].getFitness(); String bFit1 = Integer.toString(bFit); writer.writeNext(new String[]{aFit1, wFit1, bFit1}); 

我假设你正在使用CSVWriter写入一个CSV文件。 请确保在一个问题中提供尽可能多的细节,这使得其他人更易读。

正如你可以从CSVWriter的文档中看到的:

void writeNext(String [] nextLine)

将下一行写入文件。

writeNext方法实际上将数组写入文件的一行。 从你的代码:

 writer.writeNext(aFit2); writer.writeNext(wFit2); writer.writeNext(bFit2); 

所以,而不是做这个`String aFit2 [] = aFit1.split(“”); 创build一个值的数组,然后将该数组传递给writeNext

作为一个例子,你可以考虑你自己的例子,传递列名的数组,它被写在一行:

 writer.writeNext(Fitness);