Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

igormaneschy

Erro na exportação para excel

Recommended Posts

Olá Pessoal, Sou Muito iniciante mesmo, nas tecnologias .net, comecei essa semana , e estou tentando exporta um gridview para excel , to usando vb.net , e to seguindo o tutorial abaixo:

 

http://www.aspxcode.net/free-asp-net-data-sample-source-code.aspx?Topics=How%20to%20Export%20GridView%20to%20Excel

 

E o seguinte erro está sendo Gerado:

 

Não é possível converter um objeto do tipo 'System.EventArgs' no tipo 'System.Web.UI.ImageClickEventArgs'.

Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

 

Detalhes da Exceção: System.InvalidCastException: Não é possível converter um objeto do tipo 'System.EventArgs' no tipo 'System.Web.UI.ImageClickEventArgs'.

 

Erro de Origem:

 

 

[Nenhuma linha de origem relevante]

 

 

Arquivo de Origem: d:\documents and settings\r337696\Meus documentos\Visual Studio 2010\Projects\Cargas\Cargas\Cargas1.aspx.designer.vb Linha: 0

 

Rastreamento de Pilha:

 

 

[invalidCastException: Não é possível converter um objeto do tipo 'System.EventArgs' no tipo 'System.Web.UI.ImageClickEventArgs'.]

Cargas.Cargas1._Lambda$__1(Object a0, EventArgs a1) in d:\documents and settings\r337696\Meus documentos\Visual Studio 2010\Projects\Cargas\Cargas\Cargas1.aspx.designer.vb:0

System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118

System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10

System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13

System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36

System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

 

.

 

Eu realmente sou muito iniciante, se alguém puder me ajudar , ficaria muito grato.

 

Segue os Cod. Usados para ajudar:

 

cargas1.aspx

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="Cargas1.aspx.vb" Inherits="Cargas.Cargas1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
   <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
   AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" 
   DataSourceID="SqlDataSource1" 
   EmptyDataText="There are no data records to display." ForeColor="#333333" 
   GridLines="None">
   <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
   <Columns>
       <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
       <asp:BoundField DataField="SEQ_CARGA" HeaderText="SEQ_CARGA" 
           SortExpression="SEQ_CARGA" />
       <asp:BoundField DataField="CARGA" HeaderText="CARGA" SortExpression="CARGA" />
       <asp:BoundField DataField="PASSO" HeaderText="PASSO" SortExpression="PASSO" />
       <asp:BoundField DataField="DATA" HeaderText="DATA" SortExpression="DATA" />
       <asp:BoundField DataField="TEMPO" HeaderText="TEMPO" SortExpression="TEMPO" />
       <asp:BoundField DataField="FUNCAO" HeaderText="FUNCAO" 
           SortExpression="FUNCAO" />
       <asp:BoundField DataField="QTD_REGISTROS" HeaderText="QTD_REGISTROS" 
           SortExpression="QTD_REGISTROS" />
       <asp:BoundField DataField="STATUS" HeaderText="STATUS" 
           SortExpression="STATUS" />
       <asp:BoundField DataField="OBS" HeaderText="OBS" SortExpression="OBS" />
   </Columns>
   <EditRowStyle BackColor="#999999" />
   <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
   <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
   <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
   <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
   <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
   <SortedAscendingCellStyle BackColor="#E9E7E2" />
   <SortedAscendingHeaderStyle BackColor="#506C8C" />
   <SortedDescendingCellStyle BackColor="#FFFDF8" />
   <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
   ConnectionString="<%$ ConnectionStrings:SRConnectionString1 %>" 
   ProviderName="<%$ ConnectionStrings:SRConnectionString1.ProviderName %>" 
   SelectCommand="SELECT top 10 [iD], [sEQ_CARGA], [CARGA], [PASSO], [DATA], [TEMPO], [FUNCAO], [QTD_REGISTROS], [sTATUS], [OBS] FROM [LOG_CARGA]">
</asp:SqlDataSource>
<asp:Button ID="btnExportar" runat="server" Text="Exportar" />
</asp:Content>

 

cargas1.aspx.vb

 

Imports System.IO

Public Class Cargas1
   Inherits System.Web.UI.Page
   Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)

   End Sub
   Private Sub ExportToExcel(ByVal strFileName As String, ByVal dg As GridView)
       Response.Clear()
       Response.Buffer = True
       Response.ContentType = "application/vnd.ms-excel"
       Response.Charset = ""
       Me.EnableViewState = False
       Dim oStringWriter As New System.IO.StringWriter
       Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)

       GridView1.RenderControl(oHtmlTextWriter)

       Response.Write(oStringWriter.ToString())
       Response.[End]()

   End Sub

   Protected Sub BtnExportar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnExportar.Click
       ExportToExcel("Report.xls", GridView1)
   End Sub
End Class

 

MAIS UMA VEZ OBRIGADO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso deve resolver!

 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

 

O seu botão esta como ImageButton no evento de click no codebehind

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado cara, quando alguém sabe e mostra o erro pra gente , parece tão fácil kkkk. So que agora to com outro erro.:

 

Erro de Servidor no Aplicativo '/'.
--------------------------------------------------------------------------------

RegisterForEventValidation só pode ser chamado durante Render(); 
Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

Detalhes da Exceção: System.InvalidOperationException: RegisterForEventValidation só pode ser chamado durante Render();

Erro de Origem: 


Linha 15:         Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
Linha 16: 
Linha 17:         GridView1.RenderControl(oHtmlTextWriter)
Linha 18: 
Linha 19:         Response.Write(oStringWriter.ToString())


Arquivo de Origem: d:\documents and settings\r337696\Meus documentos\Visual Studio 2010\Projects\Cargas\Cargas\Cargas1.aspx.vb    Linha: 17 

 

O código da aplicação ainda é o mesmo , so mudei a linha que você indicou.

 

Obrigado pela ajuda .

 

Obs: você poderia comentar se essa forma de fazer a exportação está boa , ao meu ver achei simples. mas não sei se tem forma mais fácil .

 

 

 

Isso deve resolver!

 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

 

O seu botão esta como ImageButton no evento de click no codebehind

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu estava tentando fazer dessa forma e ocorreu um outro erro, segui as dicas desse post e funcionou, utilizei dados do ultimo post

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.