2 Stimmen

Konvertieren Sie asp:Table in das Excel-Format

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.

0voto

webbexpert Punkte 674

Leider sind die beiden Markups, die Sie verwenden, nicht kompatibel. HTML-Tabellen-Markup in Excel werden unterstützt, aber nicht in OpenXML, das von Ihrer Bibliothek erwartet wird, um ausgegeben zu werden.

Im Hintergrund erwartet Excel ein gültiges XML-Dateiformat; HTML, obwohl es locker unterstützt wird, ist nicht das native xlsx-Format.

Es gibt Bibliotheken im Internet, die HTML in OpenXML konvertieren können, jedoch kann dieses Problem gelöst werden, indem Sie über Ihren Datensatz iterieren und tatsächlich Zellen und Zeilen mithilfe des OpenXML SDK hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X