импорт CSV-файла в таблицу Java-свинг - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть файл csv всех котировок акций в nyse. первый столбец является символом второй столбец является названием компании.

У меня есть окно поиска и таблица, сделанные в netbeans с использованием библиотеки java swing.

Прямо сейчас, когда я ввожу имя в поле, оно возвращает правильное количество строк. Так, например, если я буду искать GOOG, он вернет только 2 строки (1 строка для символа GOOG и одна строка для имени в полном названии компании). Однако данные в строках не являются правильными, они просто печатают первую строку файла CSV снова и снова. Вот код, который выполняется при нажатии кнопки поиска:

package my.Stock;


import java.util.ArrayList;
import java.util.Scanner;
import java.io.BufferedReader;
import java.util.StringTokenizer;
import java.io.FileReader;
import java.io.*;

public class searchy {

    public static void doSearch(String s){


                                  javax.swing.JTable resTable = StockUI.stockUI.getResultTable();
                                  javax.swing.table.DefaultTableModel dtm =
                                          (javax.swing.table.DefaultTableModel) resTable.getModel();

                                  while (dtm.getRowCount()> 0 ) dtm.removeRow(0);





            String sym = s.trim().toUpperCase();

try {

//csv file containing data
String strFile = "companylist.csv";

//create BufferedReader to read csv file
BufferedReader br = new BufferedReader( new FileReader(strFile));
String strLine = "";
StringTokenizer st = null;
int lineNumber = 0, tokenNumber = 0;

//create arraylist
ArrayList<String> arrayList = new ArrayList<String>();

//read comma separated file line by line
while( (strLine = br.readLine()) != null){

lineNumber++;

//break comma separated line using ","
st = new StringTokenizer(strLine, ",");

while(st.hasMoreTokens()){

//display csv values
tokenNumber++;

arrayList.add(st.nextToken());
//System.out.println("Line # " + lineNumber + ": "+ st.nextToken() + " " + st.nextToken());
} //end small while

//reset token number
tokenNumber = 0;

} //end big while loop

//send csv to an array
Object[] elements = arrayList.toArray();
/*
for(int i=0; i < elements.length ; i++)    {
       System.out.println(elements[i]);

} */
Scanner input = new Scanner(System.in);
System.out.print("Enter Ticker symbol");
//String sym = input.next().toUpperCase(); //convert to uppercase to match csv
int j=0;
for(int i=0; i < elements.length ; i++)    {
  if (((String) elements[i]).contains(sym)){
      //System.out.println(elements[i]);

      dtm.addRow(elements);
      j++;
      if (j==25) break; //only show this many results
  }


}

}
catch(Exception e){
System.out.println("Exception while reading csv file: " + e);
}
    }
}

Я понимаю, почему это происходит, но я не уверен, как заставить его печатать правильные строки, поскольку я не могу использовать dtm.addRow (elements [i]);

Любая помощь очень ценится.

Ответы [ 3 ]

1 голос
/ 04 апреля 2011

Попробуйте CSVManager .

0 голосов
/ 13 января 2013
    package recommendation.event.test;

    import java.io.FileReader;
    import com.csvreader.CsvReader;
    public class ReadCSV {
    public static void main (String [] args){
    try {


        CsvReader products = new CsvReader("resources/Event Recommendation Engine Challenge/data/test.csv");

        products.readHeaders();

        while (products.readRecord())
        {
            String user = products.get("user");
            String event = products.get("event");
            String invited = products.get("invited");
            String timestamp = products.get("timestamp");

            System.out.println(user + " : " + event+" : "+invited+" : "+timestamp);
        }

        products.close();
    }catch (Exception e) {
        // TODO: handle exception
    }

        }
    }
0 голосов
/ 05 апреля 2011

Я собираю CSV-данные для акций от Yahoo, и, как ни странно, время от времени они путают их, используя название компании с запятой, например, «Dolby, Inc.».Конечно, это исключает анализ файла CSV.Я не знаю, может ли это быть вашей проблемой.

Джон Донер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...