从csv文件导入数据,我应该像excel文件一样读取它吗?

时间:2015-01-12 11:39:01

标签: java excel file csv

我正在编写一个java程序来从csv文件中读取数据并将其存储在数据库中。 我有点困惑。 如果我打开相应的csv文件,它将打开microsoft excel。 因此,在阅读此csv文件时,我应该根据','或';'阅读(比如在csv文件中), 或者我应该像在excel文件中那样阅读(逐列)?

String cvsSplitBy = ",";

br =  new BufferedReader(new FileReader(csvFile));
        while((line = br.readLine()) != null){

            String[] row = line.split(cvsSplitBy);
            String value1 = row[1];
         }

我做得对吗?或者我应该改变它,阅读时尚?

3 个答案:

答案 0 :(得分:1)

CSV文件基本上是文本文件。 MS Excel可以读取和写入CSV文件,它使用CSV文件中的分隔符(如,或;)以表格的形式进行显示。但是使用专用解析器/流读取CSV文件是有利的,因为CSV不仅仅是带分隔符的文本文件。

例如如果';'是分隔符,那么带有','的字符串不应该分成两行。此外,如果有字符串作为数据,(例如,如果列数据是“Fun; Enjoy” - 包括双引号),那么您不希望该字符串在两个不同的列中被拆分为“Fun and Enjoy”。只有使用CSV解析器/流(您可以根据需要创建的自定义类或已经存在的自定义类)才能实现这种复杂性。

答案 1 :(得分:0)

你做错了。您的代码仅适用于CSV的一小部分

尝试使用下一个文件

First value, "Second value", "Third, but not last", "and you will be surprised
how agile CSV is"

此数据包含两行,但只包含一行CSV行。第三列中的值包含逗号。最后一个值由两行组成。

所以你最好使用真正的解析器,如果你还没准备好处理所有这些情况(可能还有更多)

答案 2 :(得分:0)

CSV可以被任何东西分开,最流行的是逗号,但它不一定是昏迷。 CSV文件是一个矩阵(或表),其中列由给定的分隔符(通常是逗号)分隔。

例如SalesForce sample csv is a comma

但是,如果您尝试导入文件,请选择excel:

, ; | \t 

在上图中,您可以看到excel导入向导中的可用分隔符 enter image description here