Hej, har ett problem jag inte hittar någon lösning på. Jag exporterar en datagrid till Excel enligt nedanstående kod. Funkar utmärkt till min dator men inte till en annan där sidan istället öppnas som en slags html sida. Det kan vara detta: Den ändringen har jag tyvärr redan provat. Skillnaden mellan att ha den i och urbockad verkar vara att sidan öppnas i IE resp Excel. Vad som visas påverkas dock inte. Byt ut response.write mot Vet inte om jag gjorde som du menade men fick felmess "Invalid character in a Base-64 string". Kod enl följande testa att ta bort denna rad: bArr = Convert.FromBase64String(tw.ToString) Den har jag bara med för att kunna använda Response.BinaryWrite, har för tydlighetens skull deklarerat den på en egen rad. Verkar funka! Datagrid till Excel funkar på vissa datorer
<code>
Response.Clear()
Response.Charset = ""
Response.ContentType = "application/vnd.ms-excel"
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
dgLager.RenderControl(hw)
Response.Write(tw.ToString)
Response.End()
</code>
Samma effekt kan jag uppnå på min dator om jag skriver stringwriter'n till en label enl nedan
<code>
Response.Clear()
Response.Charset = ""
Response.ContentType = "application/vnd.ms-excel"
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
dgLager.RenderControl(hw)
Label1.Text = tw.ToString
</code>
Samma operativ och Excelversion på båda datorerna. Jag har letat efter någon inställning i Excel som kan förklara detta men inte hittat något. Någon som har en aning om vad det kan bero på?Sv: Datagrid till Excel funkar på vissa datorer
Det är en inställning som hänger på filtillägget '.xls' i Windows.
Ändras så här:
I Utforskaren: Meny Verktyg -> Mappalternativ -> Filtyper
-> Välj "XLS" -> Avancerat -> Bocka av "Visa i samma fönster" Sv:Datagrid till Excel funkar på vissa datorer
Sv: Datagrid till Excel funkar på vissa datorer
Response.BinaryWrite(tw.ToString)
Response.Flush()Sv:Datagrid till Excel funkar på vissa datorer
<code>
Response.Clear()
Response.Charset = ""
Response.ContentType = "application/vnd.ms-excel"
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
Dim bArr As Byte()
dgrubrik.RenderControl(hw)
dgLager.RenderControl(hw)
bArr = Convert.FromBase64String(tw.ToString)
Response.BinaryWrite(bArr)
'Response.Write(tw.ToString)
Response.Flush()
Response.End()
</code>Sv: Datagrid till Excel funkar på vissa datorer
Sv:Datagrid till Excel funkar på vissa datorer
Sv: Datagrid till Excel funkar på vissa datorer
' http-header som tolkas av IE att det är en excelfil som kommer
Response.ContentType = "application/vnd.ms-excel"
' se till att åäö fungerar
Response.Charset = "iso-8859-1"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1")
' bestäm filnamn till klienten
Response.AddHeader("Content-Disposition", "attachment;filename=test_excel.xls")
Me.EnableViewState = False
' skapar ett objekt för att lagra datat från datagrid till sträng
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
' hämta data
Dim ds As DataSet = routines.ReturnDataset("select * from customers")
' fyll dataset till en datagrid för att få ut formatering
Dim dgrid As New DataGrid
dgrid.DataSource = ds
dgrid.DataBind()
' Hämta ut html ur datagrid
dgrid.RenderControl(hw)
' Skriv html-datat till klienten
Response.Write(tw.ToString())
' Töm utdatat och avsluta utmatning av data
Response.Flush()
Response.End()
Sv:Datagrid till Excel funkar på vissa datorer
Det som gjorde susen var att lägga till "Content-Disposition". På min dator funkade det oavsett om detta var med eller inte men på vissa andra krävdes det. Tack för hjälpen!