在其字段中使用逗号读取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);
}
答案 0 :(得分:7)
您提供的代码根本不会解析该文件。它将它分成几行,但就是这样。
您应该将行解析为值 - 幸运的是,您不需要编写太多代码来自己编写代码。像JavaCSV,OpenCSV和Super CSV这样的图书馆可以轻松实现这一目标。
因此,在解析之后,你将拥有一组行,每行都是一组值。您可能希望创建一个类来处理每一行,以便您可以更干净地处理数据。您应该可以在Swing UI中很好地格式化,而不显示“|”之类的内容值之间。
尽可能以合适的形式处理数据非常重要 - 所以当你阅读文件时,尽早完成所有的解析工作(除非你有一个真的好的理由不是当然) - 这样你的其余代码可以更清洁。您的UI代码根本不应该关心您从CSV文件开始加载数据。