在其字段中使用逗号读取csv文件的问题

时间:2012-09-09 08:59:04

标签: java csv

在其字段中使用逗号读取csv文件时遇到问题。当读取csv时,它会生成双引号,当此数据传递到表中时,引号会重新排列不同列中值的位置。我用了“|”将表格表示为视图,但它用逗号分隔。

用excel打开时

  LD            |LA| L|       T            |A

 Car Park Store,|  |4a|South Bank Road     |

用代码打开时

  LD            |LA| L|       T            |A

"Car Park Store |" |  |       4a           |South Bank Road

这个想法是让它看起来像在excel中那样。

   public void readFromFile(){
   List<String> output = new ArrayList<String>();
  try{
    BufferedReader bufferedReader = new BufferedReader(new FileReader(filename));
    String line = "";

    while ((line = bufferedReader.readLine()) != null){
     output.add(line);
    }

    bufferedReader.close();

  } catch(FileNotFoundException fne){
    csvReaderErrorMessage +=  "File '" + filename + "' cannot be found.";

  }catch(IOException ioe){
    csvReaderErrorMessage +=  "Problem reading file: '" + filename+"'";
  }

  csvDataModel.setData(output);

 }

1 个答案:

答案 0 :(得分:7)

您提供的代码根本不会解析该文件。它将它分成几行,但就是这样。

您应该将行解析为值 - 幸运的是,您不需要编写太多代码来自己编写代码。像JavaCSVOpenCSVSuper CSV这样的图书馆可以轻松实现这一目标。

因此,在解析之后,你将拥有一组行,每行都是一组值。您可能希望创建一个类来处理每一行,以便您可以更干净地处理数据。您应该可以在Swing UI中很好地格式化,而不显示“|”之类的内容值之间。

尽可能以合适的形式处理数据非常重要 - 所以当你阅读文件时,尽早完成所有的解析工作(除非你有一个真的好的理由不是当然) - 这样你的其余代码可以更清洁。您的UI代码根本不应该关心您从CSV文件开始加载数据。