Я думаю, что на самом деле проблема не в генерировании CSV, а в том, как Excel обрабатывает данные при открытии через проводник.
Попробовав этот код и просмотрев CSV в текстовом редакторе (не в Excel), обратите внимание, что он отображается правильно, хотя при открытии в Excel ведущие нули теряются!
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"));
// feed in your array (or convert your data to an array)
String[] entries = "0123131#21212#021213".split("#");
List<String[]> a = new ArrayList<>();
a.add(entries);
//don't apply quotes
writer.writeAll(a,false);
writer.close();
Если вы действительно уверены, что хотите видеть первые 0 для числовых значений , когда Excel открывается пользователем, тогда каждая запись ячейки будет в формате = "dataHere" ; см. код ниже:
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"));
// feed in your array (or convert your data to an array)
String[] entries = "=\"0123131\"#=\"21212\"#=\"021213\"".split("#");
List<String[]> a = new ArrayList<>();
a.add(entries);
writer.writeAll(a);
writer.close();
Теперь Excel показывает при открытии Excel из проводника Windows (двойной щелчок):
Но теперь, если мы увидим CSV в текстовом редакторе, с измененными данными, чтобы «соответствовать» просмотру в Excel, он будет отображаться как:
Также смотрите ссылку:
формат номер-в-текст-в-CSV-при открытых в-и-первенствует-и-блокнот