Lassen Sie einen Bericht von der DB generiert werden, möchten Sie eine Export-Schaltfläche hinzufügen, damit sie den gleichen Bericht in einem Excel-lesbaren Blatt eines Typs erhalten können. Der Schlüssel hier ist die Einfachheit der Implementierung, so dass eine CSV über XLS in Ordnung ist, wenn es einfacher ist.Einfache Methode zum Exportieren einer HTML-Tabelle in Excel-Datei in ASP.NET?
Antwort
Excel ist eigentlich etwas gut im Lesen von HTML. Vor allem, wenn Ihr HTML nur eine einzige Tabelle enthält. Wenn Sie den Browser öffnen Sie die Datei nach oben in Excel sagen mögen, können Sie
Response.ContentType = "application/vnd.ms-excel"
Hier können Sie den Browser anweist, das Dokument in Excel zu öffnen, statt Rendering es einfach von selbst. Es gibt jedoch ein paar Probleme. Ich denke nicht, dass es funktionieren wird, wenn jemand es stattdessen mit OO.org Calc öffnen möchte. Auch wenn Sie versuchen, es zu speichern, wird es die Datei nie in eine echte Excel-Datei konvertieren, es sei denn, der Benutzer ändert den Dateityp explizit. Wenn es sich nur um eine Intranet-App für Ihre Organisation handelt, ist dies möglicherweise kein Problem. Die Plus-Seite ist, dass Sie Farben, Rahmen und sogar Formeln verwenden können, was nicht möglich ist, wenn Sie gerade CSV verwenden.
Sie können Htmltextwriter verwenden:
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
grid.RenderControl(htmlWriter);
wo Gitter ein Datagrid-Objekt ist. Sie können auch andere Arten von Steuerelementen verwenden.
Ich habe dies in einer sehr einfachen Anwendung getan, und es hat wirklich gut funktioniert. Anstatt sich mit irgendeiner Art von Export oder dergleichen herumzuärgern, wurde alles mit einer Codezeile abgewickelt. – MattGWagner