Если вы хотите положиться на магию MS Excel, вы можете установить
Response.ContentType = "application/vnd.ms-excel";
создайте свою таблицу внутри вывода HTML и позвольте Excel интерпретировать ее, как если бы это был файл XLS.
Если вы используете нестандартные цвета, вам, вероятно, нужно добавить их в раздел , как я только что нашел в одном из моих прошлых проектов:
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:Colors>
<o:Color>
<o:Index>16</o:Index>
<o:RGB>#E10056</o:RGB>
</o:Color>
<o:Color>
<o:Index>17</o:Index>
<o:RGB>#d4d1b8</o:RGB>
</o:Color>
</o:Colors>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
Используйте автоматизацию Excel COM для создания real XLS на стороне сервера и отправки его через Response.WriteBinary
как ответил Мэтт