Avatar billede sbaht Nybegynder
25. april 2006 - 13:00 Der er 15 kommentarer

Eksport fra sql db til Excel .

Jeg har lavet en søgefunktion som kan eksportere nogle data fra en sql db til Excel, men når man eksportere over i Excel kommer æ ø å ikke med, er der nogen der kan forklare dette??

Koden ser således ud:

private void ClearControls(Control control)
        {
            for (int i=control.Controls.Count -1; i>=0; i--)
            {
                ClearControls(control.Controls[i]);
            }

            if (!(control is TableCell))
            {
                if (control.GetType().GetProperty("SelectedItem") != null)
                {
                    LiteralControl literal = new LiteralControl();
                    control.Parent.Controls.Add(literal);
       
                    try
                    {
                        literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null);
                    }
                    catch

                    {

                    }

                    control.Parent.Controls.Remove(control);
                }

                else

                    if (control.GetType().GetProperty("Text") != null)
                {
                    LiteralControl literal = new LiteralControl();
                    literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
                    control.Parent.Controls.Remove(control);
                }
            }
            return;
        }
private void Button3_Click(object sender, System.EventArgs e)
        {
            Response.Clear();
            Response.Buffer= true;
            Response.ContentType = "application/vnd.ms-excel";
            Response.Charset = "";
            this.EnableViewState = false;

            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

            this.ClearControls( DataGrid1 );
            DataGrid1.RenderControl(oHtmlTextWriter);

            Response.Write(oStringWriter.ToString());

            Response.End();

        }
    }
Avatar billede arne_v Ekspert
25. april 2006 - 13:06 #1
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            oStringWriter.Encoding = Encoding.Default; // <----
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

måske
Avatar billede sbaht Nybegynder
25. april 2006 - 13:17 #2
Hvis jeg prøver ovenstående får jeg følgende fejl:

The type or namespace name 'Encoding' could not be found (are you missing a using directive or an assembly reference?)
Avatar billede dj_uncas Nybegynder
25. april 2006 - 13:19 #3
husk
"using System.Text"

Encoding ligger i System.Text.Encoding
Avatar billede sbaht Nybegynder
25. april 2006 - 13:22 #4
Ok nu får jeg så bare denne fejl:

Property or indexer 'System.IO.TextWriter.Encoding' cannot be assigned to -- it is read only.
Avatar billede arne_v Ekspert
25. april 2006 - 14:09 #5
så:

System.IO.StringWriter oStringWriter = new System.IO.StringWriter(Encoding.Default);
System.Web.UI.HtmlTextWriter(oStringWriter);
Avatar billede arne_v Ekspert
25. april 2006 - 14:10 #6
jeg synes iøvrigt at fejlmeddelsen antyder at linien er sat ind under oHtmlTextWriter
Avatar billede sbaht Nybegynder
25. april 2006 - 14:41 #7
Det ser således ud:

private void Button3_Click(object sender, System.EventArgs e)
        {
            Response.Clear();
            Response.Buffer= true;
            Response.ContentType = "application/vnd.ms-excel";
            Response.Charset = "";
            this.EnableViewState = false;

            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            oStringWriter.Encoding = Encoding.Default; // <----
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

            this.ClearControls( DataGrid1 );
            DataGrid1.RenderControl(oHtmlTextWriter);

            Response.Write(oStringWriter.ToString());

            Response.End();

        }
Avatar billede arne_v Ekspert
25. april 2006 - 15:12 #8
har du proevet 14:09:08 ?
Avatar billede sbaht Nybegynder
25. april 2006 - 15:17 #9
Ja det kom der flere fejl ud af, vi er enige om at det skal se ud som nedenstående?

private void Button3_Click(object sender, System.EventArgs e)
        {
            Response.Clear();
            Response.Buffer= true;
            Response.ContentType = "application/vnd.ms-excel";
            Response.Charset = "";
            this.EnableViewState = false;

            System.IO.StringWriter oStringWriter = new System.IO.StringWriter(Encoding.Default);
System.Web.UI.HtmlTextWriter(oStringWriter);
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

            this.ClearControls( DataGrid1 );
            DataGrid1.RenderControl(oHtmlTextWriter);

            Response.Write(oStringWriter.ToString());

            Response.End();

        }
Avatar billede arne_v Ekspert
25. april 2006 - 15:31 #10
jeg har lige checket - StringWriter har ikke saadan en constrcutor

saa

            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            this.ClearControls( DataGrid1 );
            DataGrid1.RenderControl(oHtmlTextWriter);
            Response.Write(Encoding.Default.GetBytes(oStringWriter.ToString())); // < ----
Avatar billede arriva Nybegynder
25. april 2006 - 19:52 #11
Sad sjovt nok med præcis samme problem.. jeg tror måske at problemet ikke ligger i contenttypen, følgende løste det for mig:
Replace("ø","&oslash;").Replace("æ","&aelig;").Replace("å","&aring;").Replace("Ø","&Oslash;").Replace("Å","&Aring;").Replace("Æ","&AElig;");
som askhoej foreslår her: http://www.eksperten.dk/spm/347489
Avatar billede dj_uncas Nybegynder
25. april 2006 - 21:29 #12
Ellers prop Response.ContentEncoding = Encoding.Default; på.. Plejer også at gøre tricket..
Avatar billede arne_v Ekspert
26. april 2006 - 02:09 #13
hvis de Replace løser problemet så er det helt sikkert char set (i conten type)
den er galt med

fordi det de gør er at udelukkende bruger US-ASCII tegn som er fælles mellem
ISO-8859-1 og UTF-8
Avatar billede sbaht Nybegynder
26. april 2006 - 07:27 #14
Ok dj_uncas det virkede at proppe Response.ContentEncoding = Encoding.Default; på..
Avatar billede arriva Nybegynder
26. april 2006 - 11:05 #15
ja, mit problem var at Excel viste dem som "sjove" tegn, men de kom med over.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester