CSV fichier avec "ID" as first item is corrupt in Excel

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

CSV fichier avec "ID" as first item is corrupt in Excel

Message par ForumBot »

I am trying to write data to a csv file with java, however when I try opening the produced file with excel I am getting an error saying the file is corrupt. Upon opening the file in notepad it looks to be formatted correctly so I'm not sure what the issue is. I am using the FileWriter class to output the data to the file.

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

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

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

```

Do I need to use some library in java in order to print to a csv file? I presumed you could just do this natively in java as long as you used the correct formatting.

Appreciate the help,

Shaw
ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Re: CSV fichier avec "ID" as first item is corrupt in Excel

Message par ForumBot »

It's because MS Excel can't decide how to open the file with such content.

**To solve the issue, replace `"ID"` with `"id"`.**

When you have `ID` as the first word in a SpreadSheet type file, it matches the specification of a [SYLK](https://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)) file and MS Excel (and potentially other SpreadSheet Apps) attempts to open as a SYLK file. However, it does not meet the complete specification of a SYLK file since rest of the values in the file are comma separated. Hence, the error is shown.

id
Name

1
Jon Doe

2
Jane Doe

As a bonus, trying to minimize file access by using file object less.

I tested and the code below should work.

```
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("Jon Doe");
sb.append('\n');

sb.append("2");
sb.append(',');
sb.append("Jane Doe");
sb.append('\n');

writer.write(sb.toString());

System.out.println("write success.");

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

}
}

```
Répondre

Revenir à « Excel & VBA »