【问题标题】:importing data from csv file, should I read it like excel file?从 csv 文件导入数据,我应该像 excel 文件一样读取它吗?
【发布时间】:2015-01-12 11:39:00
【问题描述】:

我正在编写一个 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];
         }

我做得对吗?还是应该把它改成excel阅读时尚?

【问题讨论】:

  • 当有 csvreaders/writers 可用时,你为什么要重新发明轮子
  • @JunedAhsan 这个项目就像已经存在并且有点庞大。我应该用现有的资源来做这个功能。
  • 在这个 URL 中你可以找到一个有用的读取 CSV 文件的例子journaldev.com/2544/…
  • @esprittn 谢谢。我看过那些教程。我也理解了代码。但就像我问的那样,我真正的问题是“我应该将其视为 excel 文件还是 acsv 文件”
  • Excel 可以读写 CSV 文件。您的文件是 CSV,因此您应该将其视为 CSV 文件。

标签: java excel file csv


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    用下一个文件试试

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

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

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

    【讨论】:

      【解决方案3】:

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

      例如SalesForce sample csv is a comma

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

      , ; | \t 
      

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

      【讨论】:

        猜你喜欢
        • 2016-06-08
        • 1970-01-01
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-15
        相关资源
        最近更新 更多