none
Relatório HTML RRS feed

  • Pergunta

  • Boa  Tarde, comecei a trabalhar recentemente com ASP.NET C#, e estou necessitando fazer um relatório em HTML.

    Achei este exemplo na internet link, e consegui adaptar ao meu código para ver como funciona, e rodou perfeitamente.

    Porem todo código está escrito junto, não está separado, como estou trabalhando recentemente com a linguagem me foi informado que não é uma boa prática de programação, eu gostaria de saber no caso, como eu separo, vou postar um pouco do código aqui pra vocês verem.

    <div>
    			<!-- Tabela com o título do relatório -->
    			<table align="center" width="85%" border="2" >
    			<tr>   
    				<td align="center" colspan="2" style="color: Red; font-size: 150%">
    					<u><b>RELATÓRIO DE CONTAS A PAGAR</b></u>
    				</td>	 
    			</tr>  
    			<tr>		 
    			</tr>  
    			</table>
    	<%	 
             if (!IsPostBack)
    			{
                    SqlConnection con = web_academia.clsdb.AbreBanco();
                    SqlDataAdapter dadProd = new SqlDataAdapter("select * from cantas_apagar", con);
    	
    				DataSet dtsRelat = new DataSet();
    				dadProd.Fill(dtsRelat, "Contas");
    				
    	%>
    					<!-- inicio da tabela de produtos -->
    					<table align="center" width="85%" border="2" >
    						<tr align="center">	 
    							<td align="center" style="width: 15%">
    								<b>VENCIMENTO</b>
    							</td>
    							<td align="center"  style="width: 10%">
    								<b>FORMA PAGAMENTO</b>
    							</td>		 
    							<td align="center" style="width: 40%">
    
    								<b>OBSERVAÇÃO</b>
    							</td>		
                                <td align="center" style="width: 15%">
    								<b>VALOR</b>
    							</td>	
                                <td align="center" style="width: 20%">
    								<b>DATA PAGAMENTO</b>
    							</td>		 	 
    						</tr>				  
    	<%			 
                    foreach (DataRow rowProd in dtsRelat.Tables["Contas"].Rows)
    					{
    	%>									  
    							<tr align="center">	 
    								<td align="center" style="width: 15%">				
    									<%=rowProd["vencimento"].ToString()%>
    								</td>
    								<td align="center" style="width: 10%">
    									<%=rowProd["forma_pagamento"].ToString()%>
    								</td>		 
    								<td align="center" style="width: 30%">
    									<%=rowProd["observacao"].ToString()%>
    								</td>	
                                    <td align="center" style="width: 20%">
    									<%=rowProd["valor"].ToString()%>
    								</td>	
                                    <td align="center" style="width: 20%">
    									<%=rowProd["data_pagamento"].ToString()%>
    								</td>			 
    							</tr>									
    	<%
    					} 
    	%>				 
    				</table> 
    	<% 
                } 
    	%>			
    		</div>
    Como vocês podem ver, a parte de conexão e a parte para gerar a tabela estão todas juntas, o que seria interessante era criar um método em c# para puxar. Estou pesquisando na internet, porém não estou achando nada claro. Caso alguém tem uma sugestão, ou uma prática melhor. Agradeço. Obrigado.

    terça-feira, 14 de março de 2017 20:32

Respostas

  • Mariana, eu uso o report viewer como gerador de relatórios fica mais apresentável e controla bem cabeçalho e paginação. 

    Tenho um site antigo que exibo meus relatórios em HTML, faço assim abro um pop-up para exibir o relatório no .aspx coloco apenas isso

    <asp:label id="lbl_conteudo" runat="server">

    No .CS acesso o banco e monto o relatório dentro dessa label

    Vou postar arqui um pequeno exemplo

    lblconteudo.Text += "<table width=" + "670px" + " cellpadding=" + "5" + " cellspacing=" + "1" + " border=" + "0" + " bgcolor=" + "#999999" + ">";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Centro de Dados</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Extrato Financeiro - Detalhado</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Empresa: " + empresa + "</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Período: " + data + "</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "</table>";
    lblconteudo.Text += "<table width="+"670px"+" cellpadding="+"5"+" cellspacing="+"1"+" border="+"0"+" bgcolor="+"#999999"+">";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan="+"5"+" width="+"570px"+"><b>Detalhamento</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr bgcolor="+"#EEEEEE"+">";
    lblconteudo.Text += "<td width="+"20px"+" align="+"Center"+"><b>Data</b></td>";
    lblconteudo.Text += "<td width="+"50px"+" align="+"center"+"><b>Nr.Docu</b></td>";
    lblconteudo.Text += "<td width="+"250px"+" align="+"center"+"><b>Histórico</b></td>";
    lblconteudo.Text += "<td width="+"100px"+" align="+"center"+"><b>Vl.Entrada</b></td>";
    lblconteudo.Text += "<td width="+"100px"+" align="+"center"+"><b>Vl.Saida</b></td>";
    lblconteudo.Text += "<td width="+"100px"+" align="+"center"+"><b>Vl.Saldo</b></td>";
    lblconteudo.Text += "</tr>";
    foreach (DataRow dt in ds.Tables["Extrato"].Rows)
      {
        lblconteudo.Text += "<tr bgcolor="+"#FFFFFF"+">";
        lblconteudo.Text += "<td align=" + "left" + "> " + dt["dtmovi"].ToString().ToLower() + "</td>";
        lblconteudo.Text += "<td align=" + "left" + "> " + dt["nrdocu"].ToString().ToLower() + "</td>";
        lblconteudo.Text += "<td align="+"left"+"> " + dt["dshist"].ToString().ToLower()  + "</td>";
        lblconteudo.Text += "<td align=" + "right" + ">" + String.Format("{0:N2}", dt["Vlrent"]) + "</td>";
        lblconteudo.Text += "<td align=" + "right" + ">" + String.Format("{0:N2}", dt["Vlrsai"]) + "</td>";
        vlrsld = Convert.ToDouble(dt["Vlrsald"]);
        if (vlrsld >= 0)
         {
            lblconteudo.Text += "<td align=" + "right" + "><font color=" + "#0000FF" + "> " + String.Format("{0:N2}", dt["Vlrsald"]) + "</font></td>";
         }
         else
         {
            lblconteudo.Text += "<td align=" + "right" + "><font color=" + "#FF0000" + "> " + String.Format("{0:N2}", dt["Vlrsald"]) + "</font></td>";
         }
         lblconteudo.Text += "</tr>";
      }
    lblconteudo.Text += "</table>";



    Junior

    • Marcado como Resposta Mariana C. Costa quarta-feira, 15 de março de 2017 18:50
    quarta-feira, 15 de março de 2017 12:36

Todas as Respostas

  • Alguém que possa me ajudar? Por favor?
    quarta-feira, 15 de março de 2017 12:03
  • Mariana, eu uso o report viewer como gerador de relatórios fica mais apresentável e controla bem cabeçalho e paginação. 

    Tenho um site antigo que exibo meus relatórios em HTML, faço assim abro um pop-up para exibir o relatório no .aspx coloco apenas isso

    <asp:label id="lbl_conteudo" runat="server">

    No .CS acesso o banco e monto o relatório dentro dessa label

    Vou postar arqui um pequeno exemplo

    lblconteudo.Text += "<table width=" + "670px" + " cellpadding=" + "5" + " cellspacing=" + "1" + " border=" + "0" + " bgcolor=" + "#999999" + ">";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Centro de Dados</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Extrato Financeiro - Detalhado</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Empresa: " + empresa + "</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan=" + "5" + " width=" + "570px" + "><b>Período: " + data + "</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "</table>";
    lblconteudo.Text += "<table width="+"670px"+" cellpadding="+"5"+" cellspacing="+"1"+" border="+"0"+" bgcolor="+"#999999"+">";
    lblconteudo.Text += "<tr>";
    lblconteudo.Text += "<td colspan="+"5"+" width="+"570px"+"><b>Detalhamento</b></td>";
    lblconteudo.Text += "</tr>";
    lblconteudo.Text += "<tr bgcolor="+"#EEEEEE"+">";
    lblconteudo.Text += "<td width="+"20px"+" align="+"Center"+"><b>Data</b></td>";
    lblconteudo.Text += "<td width="+"50px"+" align="+"center"+"><b>Nr.Docu</b></td>";
    lblconteudo.Text += "<td width="+"250px"+" align="+"center"+"><b>Histórico</b></td>";
    lblconteudo.Text += "<td width="+"100px"+" align="+"center"+"><b>Vl.Entrada</b></td>";
    lblconteudo.Text += "<td width="+"100px"+" align="+"center"+"><b>Vl.Saida</b></td>";
    lblconteudo.Text += "<td width="+"100px"+" align="+"center"+"><b>Vl.Saldo</b></td>";
    lblconteudo.Text += "</tr>";
    foreach (DataRow dt in ds.Tables["Extrato"].Rows)
      {
        lblconteudo.Text += "<tr bgcolor="+"#FFFFFF"+">";
        lblconteudo.Text += "<td align=" + "left" + "> " + dt["dtmovi"].ToString().ToLower() + "</td>";
        lblconteudo.Text += "<td align=" + "left" + "> " + dt["nrdocu"].ToString().ToLower() + "</td>";
        lblconteudo.Text += "<td align="+"left"+"> " + dt["dshist"].ToString().ToLower()  + "</td>";
        lblconteudo.Text += "<td align=" + "right" + ">" + String.Format("{0:N2}", dt["Vlrent"]) + "</td>";
        lblconteudo.Text += "<td align=" + "right" + ">" + String.Format("{0:N2}", dt["Vlrsai"]) + "</td>";
        vlrsld = Convert.ToDouble(dt["Vlrsald"]);
        if (vlrsld >= 0)
         {
            lblconteudo.Text += "<td align=" + "right" + "><font color=" + "#0000FF" + "> " + String.Format("{0:N2}", dt["Vlrsald"]) + "</font></td>";
         }
         else
         {
            lblconteudo.Text += "<td align=" + "right" + "><font color=" + "#FF0000" + "> " + String.Format("{0:N2}", dt["Vlrsald"]) + "</font></td>";
         }
         lblconteudo.Text += "</tr>";
      }
    lblconteudo.Text += "</table>";



    Junior

    • Marcado como Resposta Mariana C. Costa quarta-feira, 15 de março de 2017 18:50
    quarta-feira, 15 de março de 2017 12:36
  • Olá Junior, também gosto muito do reportviewer, por sem bem dinâmico, porém não utilizaremos conexão nas configurações dentro do projeto, a conexão é feita pela classe que pega de um outro txt (devido ser vários programas acessando a mesma conexão, pois caso necessite mudar, já alterar de todas de uma vez). Então a única opção que me sobrou foi o HTML, vou realizar o teste aqui, desta forma que me orientou. Obrigado.
    quarta-feira, 15 de março de 2017 12:46
  • Bom dia Junior, consegui fazer dessa forma que me informou, porém estou com uma dúvida, por exemplo, como posso deixar a parte do cabeçalho do meu relatório como flutuante ? Ou seja se descer a barra de rolagem, ele não desaparecer. Você sabe me informar? Obrigado.

    	<table align="center" width="85%" border="2" >
    						<tr align="center">	 
    							<td align="center" style="width: 15%">
    								<b>VENCIMENTO</b>
    							</td>
    							<td align="center"  style="width: 10%">
    								<b>FORMA PAGAMENTO</b>
    							</td>		 
    							<td align="center" style="width: 40%">
    
    								<b>OBSERVAÇÃO</b>
    							</td>		
                                <td align="center" style="width: 15%">
    								<b>VALOR</b>
    							</td>	
                                <td align="center" style="width: 20%">
    								<b>DATA PAGAMENTO</b>
    							</td>		 	 
    						</tr>				

    quarta-feira, 15 de março de 2017 13:18
  • Talvez via css vc consiga 

    <table id="header-fixed"></table>

    #header-fixed {
        position: fixed;
        top: 0px; display:none;
        background-color:white;
    }


    Junior

    quarta-feira, 15 de março de 2017 13:39
  • Tentei dessa forma Junior, porém não funcionou.
    quarta-feira, 15 de março de 2017 14:32
  • Tenta criar outra label e coloca ela dentro de uma <div> e monta nessa nova label só o cabeçalho e tenta colocar essa div para aquele css. 

    Mais nunca tive essa necessidade, não se se vc vai conseguir.


    Junior

    quarta-feira, 15 de março de 2017 14:44
  • Obrigado Junior, estou realizando os testes, se conseguir algo positivo, posto o resultado.
    quarta-feira, 15 de março de 2017 18:51