PplWare Mobile

Tutorial C# – Imprimir Conteúdo da DataGridView

                                    
                                

Este artigo tem mais de um ano


Autor: Hélio Moreira


  1. Shogun says:

    Boas, finalmente voltaram os tutoriais de C# 🙂

    Em relação a este tutorial, queria deixar-te uma sugestão que pretendo que seja construtiva.Em vez de continuares a usar o tradicional windows forms, penso que poderias começar a usar WPF (Windows Presentation Foundation) onde algumas tarefas como a impressão se encontram actualmente facilitadas.Aproveito para deixar um link para uns videos, caso alguem queira aprender.

    http://windowsclient.net/learn/videos_wpf.aspx

    Um abraço

  2. Paulo Silva says:

    Bom Post, numa linguagem de programação que diariamente encontro durante o horário de trabalho no meu PC …

    Pessoalmente, não costumo usar o DataGridView …. até agora … mas como nunca se sabe o futuro …. pode vir a ser util …
    Encontro-me mais virado para o Spread ou controlos da Infragistics. Mas que são ambos componentes pagos …

    Obrigado!

    Abraço,
    Paulo Silva

  3. Pedro says:

    Bom topico para quem esta iniciar c#

  4. Marco Almleida says:

    Muito bom post. Ainda bem que voltaram aos tutoriais de C#. 🙂 Fico à espera do tutorial sobre WPF.

    Abraço
    MA

  5. leitorassiduo says:

    Finally!!! Os tutoriais de programação. Mesmo que sejam dicas que eu já conheça leio todos do principio ao fim 😀

    Muito obrigado.

    SUGESTÃO: e posts de Java não? Desde o básico, passando pelos Web-services, criptografia, geração e manuseamento pdf’s e outros files, IDE’s (por exemplo o Eclipse e o Netbeans), Web-apps, hibernate e outros tipos de acesso e edição de BD’s, etc.. só uma sugestão 😀

    • Nuno says:

      Também concordo contigo acho que devia de haver também tutoriais de Java, senão qualquer dia começo a pensar que isto é so Micro$oft 😛

      • Vítor M. says:

        Alguém se oferece para semanalmente fazer tutoriais em java?

        • leitorassiduo says:

          Pah.. semanalmente não digo, mas ocasionalmente, poderei fazer qualquer coisa apesar da minha experiencia nula a escrever artigos de qualquer especie. Eu so sei escrever mails 😀 esses sao as dezenas todos os dias 😀

          • Hélio Moreira says:

            Não há problema, se for preciso depois dá-se uns retoques… Podes então fazer um de java?

          • leitorassiduo says:

            Então mas onde costumam elaborar os tutoriais (editor ou ide)? Fazem em html? Caso ponha imagens têm preferencia pelo local onde as alojo?

            Para começar uma introdução ao Java serve não? Quem contacto quando tiver a “coisa” pronta? 🙂

          • Hélio Moreira says:

            Podes enviar para mim…Claro que ficarás com os Créditos 🙂

            Abraço

          • leitorassiduo says:

            Responde às minhas outras questões please. E já agora, onde posso mais tarde ver o teu contacto para te enviar depois de feito?

        • Sod says:

          Eu estou a aprender java e já tenho um amplo conhecimento com C/C++. Posso escrever alguns tutos já que tenho algum tempo livre. Não tenho problema em me juntar com mais pessoal e dividir o trabalho. Se necessário enviem mail.

  6. José Dias says:

    Boas, bom tutorial, a impressão em C# é algo que em tempos também já me custou muitas horas de pesquisa e algumas dores de cabeça.

    Aproveito para deixar por aqui uma questão que talvez me possam ajudar a resolver.

    Há pouco tempo desenvolvi uma pequena aplicação em C# + MSSQL no VS2008, um gestor de despesas. Essa aplicação encontra-se instalada no meu Portátil e sempre que tanto eu como a minha namorada queremos adicionar uma despesa temos de utilizar o meu PC. Recentemente a minha namorada adquiriu também um portátil e perguntou-me se seria possível instalar a aplicação no portátil dela para não ter utilizar o meu sempre que quisesse adicionar uma despesa. Eu expliquei-lhe que isso traria o problema de as despesas que fossem adicionadas no meu PC não apareceriam no dela e vice-versa dado as bases de dados estarem separadas. E que caso se usassem bases de dados separadas algumas funcionalidades que implementei perderiam o objectivo (Gráficos Mensais e Anuais, Estatísticas, etc).

    O que me traz a questão:

    Existe alguma hipótese de sincronizar a informação entre as bases de dados, (respeitando índices), entre os PCs?

    Agradeço desde já qualquer sugestão.

    Sem mais,

    José Dias

    • João Lopes says:

      Podes fazer assim:
      Tinhas no servidor o Sqlserver Express e na aplicação em vez de te ligares directamente ao SQL usavas uma base de dados de tipo ficheiro, neste caso SQLCE, que te permite usufruir da Microsoft Sync Framework. Assim podes sincronizar facilmente os clientes com o servidor e até funcionar no modo “desconectado”. Podiam usar os portáteis durante o dia e á noite faziam o sincronismo.

      abraço

  7. João Lopes says:

    Boas.
    Está muito boa esta dica, apesar do código gigante, principalmente
    gostei de ver de volta os tutoriais da minha linguagem preferida.

    Uma questão, o que aconteceu aos tutoriais de ASP.NET? Estavam bastante bons e ia mostrar como fazer um clube de video. Não vão voltar?

    Abraço.

  8. João Rocha says:

    Boa tarde.

    Gostaria de sugerir, porque acho uma ferramenta muito importante para quem trabalha em c sharp, a utilização do LINQ.

    O LINK está disponivel apartir da versão 3.5 da framework e é uma excelente ferramenta para quem trabalha com c sharp.

    Façam um artigo sobre LINK, se precisarem da minha ajuda estou ao dispor

  9. João Rocha says:

    Faço uma correcção quando disse LINK queria dizer LINQ

  10. Carlos Carvalho says:

    Boas,
    Antes de mais gostava de dar os parabens pelo vosso trabalho.

    Eu estava a desenvolver uma pequena aplicação para gestao de umas coisas, e seguindo um pouco as vossas ideias estou a desenvolver da msm forma atraves de datagrids. Mas o problema esta em imprimir. nao estou a conseguir por a funcionar este codigo, da me erro.. servidor rpc nao esta disponivel.. será que algem me pode ajudar..

    Desde já agradeço as vossas respostas..

  11. Renas says:

    Boas,
    Estou a fazer uma aplicação em c# com SQL e este tutorial deu bastante jeito.
    So tenho um pequeno problema!
    E que a altura das linhas da datagridview para mim so pequenas tinha de aumentar! como faço isso????

    Abraço Renas

  12. David says:

    Diversos exemplos e documentação sobre como enviar e-mails em .NET no website: http://www.systemnetmail.com/

  13. RUBERVAL says:

    Boa tarde,
    Sou iniciante em C#, gostei muinto de sua materia, mas estou com uma duvida, onde no codigo do printDGV esta buscando a tabela que contem os dados para preencher a list que colocamos, pois ja tem uma grid que tem os dados ai quero passar estes dados para o seu conteudo e nao to conseguindo, nao da erro nenhum no codigo mas nao vejo as opcoes para imprimir.

    atenciosamente

    Ruberval F. Lucas

  14. RUBERVAL says:

    Boa tarde, sou eu novamente, eu consegui descobrir onde eu estava errando e ja esta imprimindo, so uma coisa, eu tenho um campo que formatei dentro da grid como moeda e no relatorio nao saiu como moeda, ok. como faria isso?

  15. David Magalhães says:

    Boa tarde, eu estou a seguir este exemplo, mas tenho um problema ao passar os campos para a listcheckbox porque eu uso SQL Server, e não estou a conseguir ir buscar o nome dos campos, alguem pode dar uma ajuda ?

  16. João Antônio Cabral says:

    Gostaria de saber se há uma maneira de imprimir o conteúdo de duas dataGridView em um mesmo documento. Uma após a outra.

    Agradeço desde já.

  17. Eduardo França says:

    Olá gostei muito deste exemplo agradeço pela ajuda deste conteudo me ajudou muito.Sou iniciante em .Net obrigado.

  18. Nogueira says:

    Boa noite
    Este tutoriais são muito bons e ajudam bastante.
    Tenho uma pequena questão a colocar, por exemplo, se a tabela tiver um maior numero de campos o conteúdo das células poderá não caber. Neste caso penso que a melhor solução seria fazer uma rotação da pagina onde o tabela será impressa. Como é que poderia fazer isto?

    Cumps

    • Rogerio Júnior says:

      Para imprimir na Horizontal, você pode seguir o seguinte passo:
      – Vai lá dentro da classe printDGV.cs
      – Lá dentro terão diversos métodos, um deles é o PrintDoc_BeginPrint, dentro dele você coloca o seguinte código: printDoc.DefaultPageSetting.Landscape = true;

      Dessa forma o sistema vai imprimir na horizontal e ajustar o tamanho das colunas.

  19. Ary F. Silveira says:

    Exemplo excelente para aprendizado muito bom mesmo. Esta de parabéns.
    Muito grato.

  20. Helder Iarossi says:

    Muito bom! era o que estava precisando. Porém preciso que o valor gerado no relatório seja o conteudo filtrado no Grind. Onde consigo alterar no código para que ele faça isto? O grind meu já possui um filtro mas atualmente esta gerando o relatório com a tabela toda sem filtrar.

    • Rogerio Júnior says:

      Toda vez que você aplica o filtro na DataGridView, os valores filtrados ficam registrados lá. É só mandar imprimir quando o filtro já estiver aplicado.
      Exemplo: colocar dois botões, um para aplicar o filtro e outro para imprimir. Dentro do botão de imprimir, você chama o método printDGV.PrintDataGridView(suaDataGridView);
      Desse jeito o método imprimir sempre vai pegar a DataGridView no estado atual.

      Abraço

  21. marcos says:

    ola.
    ja li tds os comentarios e nao consegui ver nenhuma resposta sobre estas duvida.
    na hr de imprimir nao aparece td o conteudo na celula pq tem mts caracteres e tb n vejo se é possivel mudar a pagina (retrato ou paisagem).
    agradeço se puderem me esclarecer.

    • Rogerio Júnior says:

      Para imprimir na Horizontal, você pode seguir o seguinte passo:
      – Vai lá dentro da classe printDGV.cs
      – Lá dentro terão diversos métodos, um deles é o PrintDoc_BeginPrint, dentro dele você coloca o seguinte código: printDoc.DefaultPageSetting.Landscape = true;

      Dessa forma o sistema vai imprimir na horizontal e ajustar o tamanho das colunas.

  22. brenno says:

    Fala kra blz? Vlw por disponibilizar. Mas estou com um problema, as celulas na hora da impressao ficam com uma quebra de linha tanto na parte superior quanto na inferior, o da superior eu arrumei aqui :”StrFormat.LineAlignment = StringAlignment.Near;” a celula fica com umas 3,4 quebras de linha, assim ocupando espaço. Vc sabe como arrumar? Onde eu altero?
    Vlw

    • marcos says:

      ola breno.
      vc conseguiu resolver?
      estou com o mesmo problema.
      o conteudo é maior que a linha, ou seja, nao aparece toda escreita.
      se vc conseguiu resolver, coloca a soluçao ai.
      abraço

  23. Ola…Uso esta sua class no sistema que eu uso aqui em casa…
    Só apenas gostaria de ter as opções de impressão antes de imprimir, pra mim poder imprimir em rascunho, porque quando clica pra imprimir ele imprime direto.
    Obrigado pela atenção;
    Abraço.

  24. Gabriel da Cruz Moreira Falieri says:

    Caraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    salvou minha vida, na verdade usei MySql mais foi facil adaptar, estou desde 15 hrs da tarde de ontem, procurando isso, o seu acho que vai funcionar, muito obrigado mesmo

  25. Anacleto Bunga says:

    gostei do artigo, mas eu queria consulta não com access, mas sim com sql server, podias fazer uma materia desta?

  26. Danyal Ahmed Chaudhry says:

    eu precisava duma coisa perecida mas já não há problema com este tutorial.
    preciso da tua ajuda para saber que se alguem está a trabalhar com os campos que contêm datas, no print vão sair esses dados = (01-04-2013 0:00:00) os zeros eu entendo, mas problema é se eu quiser imprimir só datas e não horas, na minha base dados eu tenho o campo com dados automaticos mas estou a usar o função date() que só me torna 01-04-2013.
    e depois faço um querry para juntar mais dados das outras tabelas e no c# só faço select * from querry.
    ajude por favor e mais rápido possível.

    • Hélio Moreira says:

      Caro Danyal,

      Enviei-lhe um email.

      De qualquer forma, a função toShortDateString() retornará apenas a data.

      Cumprimentos,
      Hélio Moreira

      • Danyal Ahmed Chaudhry says:

        tem razão mas eu não sei fazer alterações no datagrid:
        tenho o código que tirei do tutorial assim:

        // Para a coluna da TextBox
        if (((Type) ColumnTypes[i]).Name == “DataGridViewTextBoxColumn” || ((Type) ColumnTypes[i]).Name == “DataGridViewLinkColumn”)
        { e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font, new SolidBrush(Cel.InheritedStyle.ForeColor),new RectangleF((int)ColumnLefts[i], (float)tmpTop,
        (int)ColumnWidths[i], (float)CellHeight), StrFormat);
        }
        isto é para saber os tipos e criar o novo certo!
        agora tenho o datagridviewtextboxcolumn com tipo datetime, não estou a entender como altero o tipo da coluna via código.
        porque
        (((Type) ColumnTypes[i]).Type não existe sendo assim não sei donde altero o tipo e como.

  27. Tonsmit says:

    Olá bom dia!
    Pelo post e tá me ajudando bastante, porém como faria para fazer em um unico form com chklistbox e datagridbo.
    To tentando aki e tá dificil para adaptar.
    Poderia me ajudar nisso?

  28. Mario Jorge says:

    Bom dia, tenho um pequeno grande problema em relação ao relatório. Tenho um campo data que imprime “12/02/2014 00:00:00” e além disso meu data grid é bastante largo e eu precisava imprimir em paisagem. Isso seria possível?

  29. Rhael says:

    Amigo so tou com um problema eu não consigo alia a impressão para começa no comarço da folha pq ela ta tipo centralizada se poder mi ajudar agradeço!

  30. Marcio Augusto says:

    Excelente tutorial, mas estou com o mesmo problema na data, não quero imprimir a hora, somente a data.

  31. edras cremasco says:

    utilizei o codigo disponivel funciona muito bem e é muito facil de adicionar a sua aplicação

  32. Douglas Larena Oliveira says:

    Caro Helio, a proliferação do conhecimento é algo fantastico. Seu post foi realizado em Dezembro 2009…. após quase 6 anos, hoje estou de frente a mesma dificuldade. Estou tentando desenvolver um software para facilitar a rotina da minha pequenininha empresa e não estou conseguindo imprimir o conteudo do datagridview em um relatorio report ou renderiza-lo para uma planilha do excel. Vou tentar adaptar seu código a meu programa. Caso eu não consiga, vc conseguiria me ajudar?
    Obrigado
    Douglas Larena Oliveira

  33. Ricardo says:

    Boas. Usei este tuturial numa aplicação, mas fiquei com uma duvida que não sei se dá para fazer ou não. Queria saber como poderia colocar uma opção para imprimir a página na horizontal ou vertical, porque em alguns forms dava jeito ser na horizontal que ficasse a impressão.

  34. Juininho says:

    Opa,Tudo Bém ,, como faço pra qui imprima isso aeew em 80mm???

  35. Felipe says:

    Parabéns pelo tutorial, funcionou perfeitamente.

    Grato!

  36. michel says:

    obrigado funcionou perfeitamente, apenas uma duvida, como colocar a data e hora no rodapé.

  37. Jackson Neves says:

    Muito obrigado, funcionou perfeitamente!!! Vale apena seguir o passo a passo!!

  38. Eliter Lopes says:

    Amei este tutorial, só queria saber como por os dado na horizontal porque quando a tabela tem muitos dados fica uma tremenda confusão… Agradeceria a ajuda…

    Eliter Lopes Programador Clean

    Domino as seguinte linguagem:

    C#
    C++
    Unity
    HTML
    HTML 5
    Css
    PHP
    SQL
    MYSQL
    TSQL
    ACCESS
    E uma linguagem adaptada por mim que se chama” técnica de conexão em rede em c#”

    Qualquer dúvida pessoal podem me contacte porque conhecimento é para partilhar..

    Facebook—–> Eliter Lopes
    Email:———-> eliterlopes17@gmail.com

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.