ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

Export in Excel wird nicht durchgeführt - Fehlermeldung Seite kann nicht angezeigt werden

Letzter Beitrag 02-10-2010, 8:59 von kleinerkutz. 4 Antworten.
Beiträge sortieren: Zurück Weiter
  •  02-04-2010, 11:36 215827

    Export in Excel wird nicht durchgeführt - Fehlermeldung Seite kann nicht angezeigt werden

    Hallo zusammen,

    ich verzweifele derzeit ein wenig.

    Ich habe verschiedene ASP-Seiten mit jeweils einem GridView um Datenbankinhalte anzuzeigen.

    Da wir unterschiedliche Datenbanken im Einsatz haben, greift meine Intranetseite auf MSSQL, Oracle oder auch MySQL zu.

    Ich habe eine Seite für MySql mit einem GridView aufgebaut. Der Seitenaufruf
    ist auch kein Problem, die Daten werden ordnungsgemäß angezeigt.

    Jetzt habe ich zusätzlich die Export-Funktion über einen Button dargestellt.

    protected void Button1_Click(object sender, EventArgs e)
            {    
               
                GridViewExportUtil.ExportFarbe("AlleToDos.xls", GridViewAMAlleTodos);
            }


    der direkt auf die Klasse zugreift

    public class GridViewExportUtil
        {
            public static void Export(string fileName, GridView gv)
            {
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.AddHeader(
                    "content-disposition", string.Format("attachment; filename={0}", fileName));
                HttpContext.Current.Response.ContentType = "application/ms-excel";
                using (System.IO.StringWriter sw = new System.IO.StringWriter())
                {
                    using (HtmlTextWriter htw = new HtmlTextWriter(sw))
                    {
                        //  Create a form to contain the grid
                        Table table = new Table();
                        //  add the header row to the table
                        if (gv.HeaderRow != null)
                        {
                            GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
                            table.Rows.Add(gv.HeaderRow);
                        }
                        //  add each of the data rows to the table
                        foreach (GridViewRow row in gv.Rows)
                        {
                            GridViewExportUtil.PrepareControlForExport(row);
                            table.Rows.Add(row);
                        }
                        //  add the footer row to the table
                        if (gv.FooterRow != null)
                        {
                            GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
                            table.Rows.Add(gv.FooterRow);
                        }
                        //  render the table into the htmlwriter
                        table.RenderControl(htw);
                        //  render the htmlwriter into the response
                        HttpContext.Current.Response.Write(sw.ToString());
                        HttpContext.Current.Response.End();
                    }
                }
            }
            private static void PrepareControlForExport(Control control)
            {
                for (int i = 0; i < control.Controls.Count; i++)
                {
                    Control current = control.Controls<img src="http://www.aspnetzone.de/emoticons/emotion-55.gif" alt="Idea" />;
                    if (current is LinkButton)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
                    }
                    else if (current is ImageButton)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
                    }
                    else if (current is HyperLink)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
                    }
                    else if (current is DropDownList)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
                    }
                    else if (current is CheckBox)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
                    }
                    if (current.HasControls())
                    {
                        GridViewExportUtil.PrepareControlForExport(current);
                    }
                }
            }


    Aus verschiedenen Seiten klappt der Aufruf der Excel-Funktion hervorragend. Nur aus einer nicht.

    Habt Ihr eine Idee ?

    Die Seite fragt eine MySQL-Datenbank ab, dauert ca. 10 Sekunden und liefert dann ca. 7500 Zeilen als Ergebnis
    dass ich mir anzeigen aber leider nicht exportieren kann.
  •  02-04-2010, 16:44 215841 Antwort zu 215827

    AW: Export in Excel wird nicht durchgeführt - Fehlermeldung Seite kann nicht angezeigt werden

    Hi,
    kleinerkutz:

    Ich habe eine Seite für MySql mit einem GridView aufgebaut. Der Seitenaufruf
    ist auch kein Problem, die Daten werden ordnungsgemäß angezeigt.

    Jetzt habe ich zusätzlich die Export-Funktion über einen Button dargestellt.

    der eigentliche Fehler wäre interessanter. Schalt mal bitte die kurzen HTTP Fehlermeldungen im IE ab. Dann solltest Du mehr vom Fehler sehen. Falls nicht, setz dir einen Breakpoint und lauf dann zeilenweise bis zum Fehler durch. Falls das auch nicht geht, schau mal ins Ereignisprotokoll des Webservers, zumindest dort solltest Du was detaillierteres sehen. So kann man dazu leider nichts sagen.


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  02-08-2010, 8:02 215876 Antwort zu 215841

    AW: Export in Excel wird nicht durchgeführt - Fehlermeldung Seite kann nicht angezeigt werden

    Hallo,

    ich habe die kurzen Fehlermeldungen abgeschaltet. Allerdings ohne verändertes Ergebnis.

    Im Mozilla Browser erhalte ich folgende Rückmeldung:


    Fehler: Verbindung unterbrochen

    Die Verbindung zum Server wurde zurückgesetzt, während die Seite geladen wurde.

    Die einzelnen Haltepunkte werden nicht angesprungen, da vermutlich über
    die SQLDataSource irgendein Problem hat.

    Ich habe diese auch schon neu angelegt, mit selben Ergebnis.


  •  02-08-2010, 11:18 215880 Antwort zu 215876

    AW: Export in Excel wird nicht durchgeführt - Fehlermeldung Seite kann nicht angezeigt werden

    kleinerkutz:

    Die Verbindung zum Server wurde zurückgesetzt, während die Seite geladen wurde.

    meistens immer dann, wenn eine Endlosschleife läuft oder ein Speicherproblem auftritt - ich würde mal debuggen und den Haltepunkt ziemlich weit oben ansetzen (Page_Load oder so)

    Nachtrag:

     HttpContext.Current.Response.Write(sw.ToString()); <-- schreib doch in den OutputStream - ist doch eh ein Download


    Gruss Rene
    ______________________________


    weblog.drescher-hackel.de

    HTTP Compression nutzen

    dotnet-forum.de

    .NET Framework 2.0 Web-based Client Development & .NET Framework Application Development Foundation
  •  02-10-2010, 8:59 215908 Antwort zu 215880

    AW: Export in Excel wird nicht durchgeführt - Fehlermeldung Seite kann nicht angezeigt werden

    Hi,

    wie meinst Du das :

     HttpContext.Current.Response.Write(sw.ToString()); <-- schreib doch in den OutputStream - ist doch eh ein Download

    Hast Du vielleicht ein kurzes Beispiel ?
Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)