java - Excel 中以 "ID"作为第一项的 CSV 文件已损坏

标签 java excel csv export-to-csv

我正在尝试使用 java 将数据写入 csv 文件,但是当我尝试使用 excel 打开生成的文件时,我收到一条错误消息,指出文件已损坏。在记事本中打开文件后,它看起来格式正确,所以我不确定问题是什么。我正在使用 FileWriter 类将数据输出到文件中。

FileWriter writer = new FileWriter("test.csv");

writer.append("ID");
writer.append(',');
writer.append("name");
writer.append(',');
...
writer.append('\n');

writer.flush();
writer.close();

我是否需要在 java 中使用一些库才能打印到 csv 文件?我认为只要您使用正确的格式,您就可以在 java 中本地执行此操作。

感谢帮助,

最佳答案

基本上是因为 MS Excel 无法决定如何打开包含此类内容的文件。

当您将 ID 作为电子表格类型文件中的第一个字符时,它与 SYLK 的规范相匹配。文件和 MS Excel(以及可能的其他电子表格应用程序)尝试将其作为 SYLK 文件打开。但同时,它不符合 SYLK 文件的完整规范,因为文件中的其余值是逗号分隔的。因此,显示了错误。

要解决此问题,请将 "ID" 更改为 "id",它应该可以按预期工作。

enter image description here

这很奇怪。但是,是的!

还尝试通过使用文件对象来最小化文件访问。

我测试过,下面的代码运行良好。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class CsvWriter {
  public static void main(String[] args) {

    try (PrintWriter writer = new PrintWriter("test.csv")) {

      StringBuilder sb = new StringBuilder();
      sb.append("id");
      sb.append(',');
      sb.append("Name");
      sb.append('\n');

      sb.append("1");
      sb.append(',');
      sb.append("Prashant Ghimire");
      sb.append('\n');

      writer.write(sb.toString());

      System.out.println("done!");

    } catch (FileNotFoundException e) {
      System.out.println(e.getMessage());
    }

  }
}

关于java - Excel 中以 "ID"作为第一项的 CSV 文件已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073980/

相关文章:

java - glDrawArrays Exception_Access_Violation

java - JSF 1.2 - 无法访问 javax.el.E​​LContext

javascript - 如何计算 Excel 表格中数据的行数

vba - 比较 Excel 并复制其余信息

PowerShell Import-CSV 到 Export-CSV 类型转换

java - 当我使用 "java file_name"命令运行 java 程序文件时,在机器级别会发生什么?

java - 带句点和逗号的自定义格式数字

vba - 使用 Excel VBA 列出打印机时遇到问题

javascript - 读取服务器端 CSV 文件

java - CSV 文件模式匹配也匹配分隔符