2016-11-23 5 views
2

Im в настоящее время пытается записать данные в Excel для отчета. Я могу записать данные в файл csv, но его не выйдет в excel в том порядке, который я хочу. Мне нужны данные для печати по лучшим и худшим требованиям в каждом столбце, а не для печати в формате «Средний». Вот соответствующий код, любая помощь будет оценена:Написание Java CSV

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); 

enter image description here

+0

Спасибо, ребята, теперь все работает, помощь очень ценится. – Jackington

+1

удалить свой вопрос? – Alex

+0

Убейте вас через минуту! – Jackington

ответ

0

Из документов на CSVWriter.html#writeNext(java.lang.String[])

public void writeNext(String[] nextLine) - Записывает следующую строку в файл.

Строка массива, чтобы обеспечить это

Строка массива с каждым разделенных запятыми элемента, как отдельный элемент.

Вы пишете 3 отдельные строки вместо 1, и каждая строка, которую вы пишете, содержит массив с одной записью.

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

Решение: Создание единого массива со всеми 3 записей (значения столбцов) и пишут, что когда-то на одной строке.

0

Я думаю, что вы должны назвать свой метод «writeNext» один раз в каждой строке из DATAS:

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}); 
0

Я предполагаю, что вы используете CSVWriter для записи в файл CSV. Обязательно укажите как можно больше деталей в вопросе, это делает его более читаемым для других.

Как вы можете видеть из документации CSVWriter:

недействительным writeNext (String [] nextLine)

Записывает следующую строку в файл.

Метод writeNext фактически записывает массив в отдельную строку файла. Из кода:

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

Таким образом, вместо выполнения этого `Строка aFit2 [] = aFit1.split (» «); Создать массив значений, а затем передать этот массив в writeNext

В качестве примера, можно рассмотреть у вас есть пример прохождения массива имен столбцов, которую записывают в одной строке:

writer.writeNext(Fitness); 
Смежные вопросы