【问题标题】:Problems with reading csv file with commas within its fields在其字段中使用逗号读取 csv 文件的问题
【发布时间】:2012-09-09 08:59:04
【问题描述】:

读取字段中带有逗号的 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);

 }

【问题讨论】:

  • 你说的表是什么意思?你说的是秋千桌吗?您的输出变量只是一个字符串列表。看完每一行,你有没有调试过这个列表是什么样子的?
  • @RNJ 指的是秋千桌。

标签: java csv


【解决方案1】:

您提供的代码根本没有真正解析文件。它将它分成几行,但仅此而已。

您应该将这些行解析为值 - 幸运的是,您自己不需要编写太多代码来执行此操作。 JavaCSVOpenCSVSuper CSV 等库让这一切变得简单。

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

尽可能以适当的形式处理数据很重要 - 因此,当您读取文件时,请尽早完成所有解析工作(除非您有一个真的充分的理由不当然) - 这样你的代码的其余部分可以更干净。您的 UI 代码根本不应该关心您碰巧从 CSV 文件加载数据。

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 2021-06-16
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2019-03-13
    相关资源
    最近更新 更多