Если данные должны быть отправлены клиентом, отправьте их на сервер. Оказавшись на сервере, создайте StringBuilder и превратите данные в большую строку, используя запятые для разделителей столбцов и новые строки после каждой строки. Затем верните новый FileResult:
В вашем контроллере после создания StringBuilder sb:
MemoryStream ms = new MemoryStream();
StreamWriter writer = new StreamWriter(ms, Encoding.UTF8);
writer.Write(sb.ToString());
writer.Flush();
ms.Position = 0;
return File(ms, "application/vnd.ms-excel", "myfile.csv");
Импорт данных Excel - это другая история. Я не сделал этого, так что, надеюсь, кто-то еще сможет дать некоторое представление об этом.