Я делал это несколько раз. Excel имеет версию XML. Он заканчивается расширением .xml, но вы можете просто изменить расширение файла на .xls, и файл в формате XML откроется в Excel просто отлично.
Самым большим препятствием такого подхода является формат Excel XML. Я обычно создаю файл Excel в Excel в приблизительном формате, который я желаю. Затем я сохраняю файл Excel в формате XML и открываю его в текстовом редакторе.
Обычно я создаю файл шаблона на этой странице примера Excel. Затем, когда я экспортирую информацию в Gridview, мне нужно только создать xml для раздела, содержащего ячейки, которые я планирую заполнить, я просто добавляю текст и добавляю текст в файл шаблона.
Как только вы откроете файл Excel в формате xml, вы сравнительно легко поймете необходимый XML. Труднее всего понять, как ячейки ссылаются на параметры форматирования, которые находятся вверху XML-файла.
Удачи, дайте мне знать, если вам нужно больше разъяснений.
Edit:
Вам нужно будет создать шаблон файла Excel только один раз, просто чтобы почувствовать необходимый xml, который вам нужно будет сгенерировать. После того, как вы сгенерировали xml, используйте следующий код, чтобы отправить его пользователю:
string fileName = "ExportedFile.xls";
Response.Clear();
Response.Buffer = true;
Response.ContentType = "text/xml";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
ExportToExcel(HttpContext.Current.Response.OutputStream, testUID);
Response.End();
public static void ExportToExcel(Stream outputStream)
{
XmlTextWriter xmlSink = new XmlTextWriter(outputStream, Encoding.Default);
//ExcelHeaderString and ExcelStylesString are from the template
xmlSink.WriteRaw(ExcelHeaderString);
xmlSink.WriteRaw(ExcelStylesString);
//write your elements here
xmlSink.WriteElement("YourElements");
//ExcelFooterString is from the template
xmlSink.WriteRaw(ExcelFooterString);
}