Ich kann eine Excel-Datei aus asp:table generieren, aber nach dem Generieren der Excel-Datei und beim Öffnen der Datei wird eine Warnung angezeigt. Datei, die Sie zu öffnen versuchen, hat ein anderes Format als das von der Dateierweiterung angegebene. Ich habe die Lösung für diese Warnung von diesem Link gefunden http://www.aspsnippets.com/Articles/Solution-ASPNet-GridView-Export-to-Excel-The-file-you-are-trying-to-open-is-in-a-different-format-than-specified-by-the-file-extension.aspx
Also habe ich die ClosedXML-Bibliothek verwendet, aber beim Hinzufügen von Daten zum Excel-Arbeitsblatt akzeptiert es nur das Datatable-, Dataset-Format, und ich habe die Daten im String-Format, sodass es ein leeres Excel-Arbeitsblatt generiert. Bitte überprüfen Sie den Code, den ich versucht habe.
LoadDetailsToTable();
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
tbl_loctbl.RenderControl(hw);
using (XLWorkbook wb = new XLWorkbook())
{
var ws = wb.Worksheets.Add("asd");
ws.Cell(2, 1).InsertTable(sw.ToString());
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
HttpContext.Current.Response.AddHeader("content-disposition", String.Format(@"attachment;filename=newfile.xlsx"));
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(HttpContext.Current.Response.OutputStream);
MyMemoryStream.Close();
}
HttpContext.Current.Response.End();
}
Hier lädt die Funktion LoadDetailsToTable() Daten in die asp-Tabelle. tbl_loctbl ist die Tabellen-ID.