Tutorial C# – Imprimir Conteúdo da DataGridView
Este tutorial vem da necessidade que eu tive em imprimir o conteúdo de uma DataGridView num programa que desenvolvi. Após muitas horas, alguns dias, muitos exemplos (que não funcionaram e muito complicados), encontrei uma solução que funciona muito bem, pelo menos resolveu o meu “problema”. Como penso que devemos partilhar conhecimentos, decidi elaborar este tutorial.

Objectivo: Apresentar dados numa DataGridView obtidos através de dados gravados numa base de dados.
1º – Crie um novo projecto
2º – Adicione um botão (botão imprimir) e uma dataGridView
Nota: é necessário indicar que vai usar uma base de dados OleDb (Access), para isso tem de adicionar o seguinte código que está em destaque.
3º – No Form Load vamos introduzir o código que irá trazer a informação dos dados na base de dados.
Podem verificar que foi introduzido o “try” e “catch”.
Para quem não está familiarizado com este código, uma pequena explicação que posso dar é que serve para verificar se existe algum erro na ligação (try), e se encontrar, mostra esse erro numa MessageBox (catch).
Nesta altura já podem verificar que ao iniciar o programa, já aparecem dados na DataGridView.
4º – No botão imprimir irá introduzir o seguinte código
Como podem verificar, existe uma parte do código sublinhada, essa parte refere-se a uma classe que vamos criar mais à frente. Certamente este código seria somente introduzido quando essa mesma classe estivesse criada, mas assim evitamos andar a “saltar” de form para form.
5º – Agora vamos criar um novo Form que será das “opções de impressão”.
Este novo Form vai permitir que possamos escolher quais os campos que queremos imprimir, como também escrever qual o título da impressão.
É necessário inserir os seguintes Items:
- 2 Botões
- 1 CheckedListBox
- 1 TextBox
6º – Os botões “OK” e “Cancel” servem exclusivamente para abrir “caixas de diálogo”
O restante código da form “printOptions” é o seguinte:
7º – Agora vamos criar uma nova classe e atribuir o nome printDGV.
Como o código da classe é extenso, colocarei o mesmo aqui, e os comentários estão no próprio código.
Continua na próxima página….
Páginas: 1 2
|
|
|
Tweet |
Pin It
|
Arquivado na categoria: CSharp, Tutoriais
36 Comentários
Deixe o seu comentário
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. O autor deste site reserva-se, desde já, o 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.














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
Vou levar em conta a tua sugestão
Obrigado pelo teu comentário.
Abraços
Eu já programo em C# desde a .NET 1.0 mas nunca usei o WPF tenho uma dúvida quando se desenvolve uma aplicação com WPF aquilo compila o código?
Sim, compila, tal como numa aplicação em windows forms.
O próximo tutorial será sobre WPF…
Hélio
Porreiro, o WPF parece ser o caminho a seguir pela MS no futuro. Vou estar atento. Abraço
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
Bom topico para quem esta iniciar c#
Muito bom post. Ainda bem que voltaram aos tutoriais de C#.
Fico à espera do tutorial sobre WPF.
Abraço
MA
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
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
Alguém se oferece para semanalmente fazer tutoriais em java?
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
Não há problema, se for preciso depois dá-se uns retoques… Podes então fazer um de java?
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?
Podes enviar para mim…Claro que ficarás com os Créditos
Abraço
Responde às minhas outras questões please. E já agora, onde posso mais tarde ver o teu contacto para te enviar depois de feito?
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.
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
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
Sincronizar com a namorada à noite? Boa!!
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.
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
Faço uma correcção quando disse LINK queria dizer LINQ
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..
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
Diversos exemplos e documentação sobre como enviar e-mails em .NET no website: http://www.systemnetmail.com/
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
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?
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 ?
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á.
Olá gostei muito deste exemplo agradeço pela ajuda deste conteudo me ajudou muito.Sou iniciante em .Net obrigado.
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
Exemplo excelente para aprendizado muito bom mesmo. Esta de parabéns.
Muito grato.
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.
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.