Machnąłem na prędce w C#, może być? Exec jako parametry przyjmuje nazwe pliku wejściowego i pliku wyjściowego. Jak chcesz mieć inny format wyjściowy, obsługę błędów, albo inny układ kolumn to dołączam źródła możesz sobie zmienić. Projekt wymaga VS 2017 ale sama aplikacja jest tak prosta że można spokojnie skompilować czymkolwiek co przyjmuje C#.
Kiedyś robiłem generowanie ical ale skończyło się na wykorzystaniu komercyjnej biblioteki.