1

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

 }
4

1 回答 1

7

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

您应该将这些行解析为值 - 幸运的是,您无需编写太多代码即可自己完成此操作。JavaCSV 、OpenCSVSuper CSV等让这一切变得简单。

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

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

于 2012-09-09T09:15:02.250 回答