Java 读取字段中带有逗号的csv文件时出现问题
我在读取字段中带有逗号的csv文件时遇到问题。当读取csv时,它会生成双引号,当数据传递到表中时,引号会重新排列不同列中值的位置。我使用“|”将表表示为视图,但它用逗号分隔 当它在excel中打开时Java 读取字段中带有逗号的csv文件时出现问题,java,csv,Java,Csv,我在读取字段中带有逗号的csv文件时遇到问题。当读取csv时,它会生成双引号,当数据传递到表中时,引号会重新排列不同列中值的位置。我使用“|”将表表示为视图,但它用逗号分隔 当它在excel中打开时 LD |LA| L| T |A Car Park Store,| |4a|South Bank Road | 当用代码打开时 LD |LA| L| T |A "C
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);
}
public void readFromFile(){
列表输出=新的ArrayList();
试一试{
BufferedReader BufferedReader=新的BufferedReader(新文件读取器(文件名));
字符串行=”;
而((line=bufferedReader.readLine())!=null){
输出。添加(行);
}
bufferedReader.close();
}捕获(FileNotFoundException fne){
csvReaderErrorMessage+=“找不到文件名+”;
}捕获(ioe异常ioe){
csvReaderErrorMessage+=“读取文件时出现问题:”“+filename+””;
}
csvDataModel.setData(输出);
}
您给出的代码根本不解析文件。它把它分成几行,但它只做这些
您应该将行解析为值——幸运的是,您不需要自己编写太多代码来完成这项工作。图书馆喜欢,并使之容易
因此,在解析之后,您将拥有一个行的集合,每个行都是一个值的集合。您可能希望创建一个类来处理每一行,以便更干净地处理数据。您应该能够在Swing UI中很好地格式化它,而不会在值之间显示“|”之类的内容
尽可能以适当的形式处理数据是很重要的——因此,当您读取文件时,尽可能早地完成所有解析工作(当然,除非您有很好的理由不这样做)——这样,您的其余代码可以更干净。您的UI代码不应该关心您是否碰巧从CSV文件加载了数据。您给出的代码根本不解析该文件。它把它分成几行,但它只做这些 您应该将行解析为值——幸运的是,您不需要自己编写太多代码来完成这项工作。图书馆喜欢,并使之容易 因此,在解析之后,您将拥有一个行的集合,每个行都是一个值的集合。您可能希望创建一个类来处理每一行,以便更干净地处理数据。您应该能够在Swing UI中很好地格式化它,而不会在值之间显示“|”之类的内容
尽可能以适当的形式处理数据是很重要的——因此,当您读取文件时,尽可能早地完成所有解析工作(当然,除非您有很好的理由不这样做)——这样,您的其余代码可以更干净。您的UI代码不应该关心您刚开始从CSV文件加载数据的情况。您所说的表格是什么意思?你说的是摇摆台吗?输出变量只是一个字符串列表。阅读每一行后,您是否调试了此列表的外观?@RNJ我指的是swing table。您所说的table是什么意思?你说的是摇摆台吗?输出变量只是一个字符串列表。阅读每一行后,您是否调试了此列表的外观?@RNJ am指的是swing table。