我正在尝试使用 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"
,它应该可以按预期工作。
这很奇怪。但是,是的!
还尝试通过使用文件对象来最小化文件访问。
我测试过,下面的代码运行良好。
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/