Usuário com melhor resposta
Relatório HTML

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.
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
Todas as 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
-
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.
-
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>
-
-
-
-