Проблема вызвана тем, что первая ячейка / поле в первой строке имеет точное значение «ID». Excel ищет это значение и решает, что это формат файла SYLK (SYmbolic LinK), а не файл CSV.
Эту «особенность» можно преодолеть, переименовав значение «Id» или «id» - так как значение, которое ищет Excel, должно быть в верхнем регистре. В качестве альтернативы, используйте любое другое строковое значение «Identity» или «Ref» или вставьте апостроф перед идентификатором, чтобы сказать Excel, что нужно интерпретировать значение как «простой текст» - это побеждает проверку Excel, но вы можете не использовать апостроф в ваши данные.
Эта функция была в Excel по крайней мере с версии 2010 года.