begin process at 2008 07 04 00:53:40
1 204 456 membres
3 nouveaux aujourd'hui
14 114 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASS POUR IMPRIMER UNE DATAGRIDVIEW


Information sur la source

Catégorie :Imprimante Source .NET ( DotNet ) Classé sous : imprimer, datagridview, datagridviewprinter Niveau : Expert Date de création : 13/07/2007 Vu / téléchargé: 9 656 / 1 655

Note :
9,86 / 10 - par 7 personnes
9,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

Description

Bonjour,
C'est la conversion d'une classe C# DataGridViewPrinter, voir http://www.codeproject.com/csharp/datagridviewprinter.asp
En VB .NET, il ya un pb de gestion de l'impression d'une datagridview. La seule DLL disponible étant de rustemsoft étant payante.

DataGridViewPrinter : est une classe pour imprimer les datagridview. Un example est fourni avec.
Bonne programmation à tous,
Riadh.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de ManuAntibes le 16/07/2007 08:24:07

    Salut
    Félicitation pour ton travail.
    Je te mets un 10/10, et ne maquerais pas de mettre un lien lien vers ton post sur mon post Imprimer un DataGridView, http://www.vbfrance.com/codes/IMPRIMER-DATAGRIDVIEW_41261.aspx.

    Encore merci pour avoir pris la penne de mettre ton code à la disposition de tous, contrairement à d'autre qui on su developper une dll pour imprimer un datagridview, et qui ne partage pas.

    Bonne continuation
    ManuAntibes

  • signaler à un administrateur
    Commentaire de Dnx le 16/07/2007 09:57:13

    Génial la source, merci pour le partage, bravo!

    je mets un 10 aussi!

  • signaler à un administrateur
    Commentaire de ManuAntibes le 20/07/2007 08:17:50

    J'aimerais changer l'orientation d'impression de portrait en paysage.

    Comment faire ???

    Merci

  • signaler à un administrateur
    Commentaire de riadhh05 le 20/07/2007 12:19:18

    Bonjour,
    pour orienter l'impression de portrait en paysage, il suffit dans les paramètres de l'imprimante de selectionner paysage. J'ai essayé ça marche,
    Riadh.

  • signaler à un administrateur
    Commentaire de manulegosny le 27/07/2007 15:42:24

    Excellent code que je viens d'utiliser avec succès.. bravo !!
    10/10

    Juste un chti bémol, la numérotation des pages n'est pas tout à fait correcte : si le datagridview prend 2 pages, le printpreviewdialog affiche bien "page 1" et "page 2" mais à l'impression c'est "page  3" et "page 4" !!?

  • signaler à un administrateur
    Commentaire de filou le 21/08/2007 05:03:44

    Bonjour,
    Super ce code !!!
    J'aimerai supprimer lors de l'impression le redimensionnement/ajustemnt des largeurs de colonnes afin de preserver les largeurs définie par code (.Columns(1).Width = 200).
    Comment ajouter le contrôle MyPrintDocument dans une nouvelle form.

  • signaler à un administrateur
    Commentaire de filou le 21/08/2007 07:00:15

    Pour le controle PrintDocument je devais pas avoir les yeux en face des trou.

  • signaler à un administrateur
    Commentaire de rasta_raf le 05/12/2007 11:34:56

    Bravo pour le code !
    Juste un ptit bug comme l'a souligné manulegosny : la numérotation des pages est incorrecte : pour une seule page ça met Page 2, Pour deux pages ça met Page 3 et PAge 4 ... où peut se trouver le problème ?
    Thanks.

  • signaler à un administrateur
    Commentaire de manulegosny le 10/12/2007 12:49:50

    J'ai plus ou moins identifié le problème : quand on charge l'aperçu (printpreviewdialog), la classe voit cet évenement comme une impression. Si on décide d'imprimer à partir de l'aperçu,  l'impression est rajoutée... d'où les numéros de pages qui ne correspondent plus.
    Du coup, lors de l'appel à la classe, je demande à l'utilisateur de prévisualiser OU imprimer direct en ayant fermé la preview au préalable.

  • signaler à un administrateur
    Commentaire de laurent colas le 09/03/2008 18:26:30

    Apres avoir cherché pas mal de temps, je suis enfin tomber sur un petit bijou:

    http://www.completit.com/Products/DGVE/Downloads.aspx

    il s'agit d'un outil à integrer en important les librairies

    Ensuite en tres peut de ligne de code avec l'aide (en anglais)on parvient a avoir l'impression, l'export excel (pas reussi en pdf et html)et ce avec un sacré paquet d'options.

    je ne suis pas un expert et ca ma couté 2h de boulot a intégrer

  • signaler à un administrateur
    Commentaire de riadhh05 le 09/03/2008 20:27:56

    Réponse à Laurent,
    J'ai visité l'outil proposé dans le site. ça reste tjrs un outil commercial! même la version gratuite inclue le logo de CompletIT dans l'export/impression des données.
    Même si ça pourrait résoudre l'affaire de quelques developpeurs, ceci ne s'applique sur la majorité!
    Développer une application pour un nombre important d'utilisateurs necessite que: soit vous avez le code source/ ou qu'il n'y est pas de publicité pour la société qui a developpé l'API/outil.
    Et ça reste tjrs un avis personnel.
    Amitié

  • signaler à un administrateur
    Commentaire de surfzoid le 25/03/2008 21:33:31 10/10

    Ma foi, très bonne preuve du "spirit community", rien que ça, sans même lire la source, puisque de nombreux commentaire, ho joice, en témoigne, je te met un 10/10.
    @++ et bonne prog.

    Vive l'opensource!!

  • signaler à un administrateur
    Commentaire de chafaqitaha le 03/04/2008 14:51:46 10/10

    Excellent code 10/10

  • signaler à un administrateur
    Commentaire de NHenry le 09/04/2008 11:10:45 9/10

    Bonjour,

    Super classe, mais j'ai apporter quelques modifications pour gérer les images (colonnes de type Byte() ) :

    Dans la procédure :
    DrawRows :
    ' Printing the cell text
    g.DrawString(TheDataGridView.Rows(CurrentRow).Cells(CurrentCell).EditedFormattedValue.ToString(), RowFont, RowForeBrush, CellBounds, CellFormat)

    remplacée par :
                        ' Printing the cell text
                        'Modification NH : gestion des images
                        If TypeOf TheDataGridView.Rows(CurrentRow).Cells(CurrentCell).Value Is Byte() Then
                            Dim lLocation As Point = New Point(CInt(CellBounds.Location.X), CInt(CellBounds.Location.Y))
                            g.DrawImageUnscaled(Bitmap.FromStream(ByteArrayToStream(DirectCast(TheDataGridView.Rows(CurrentRow).Cells(CurrentCell).Value, Byte()))), lLocation)
                        Else
                            g.DrawString(TheDataGridView.Rows(CurrentRow).Cells(CurrentCell).EditedFormattedValue.ToString(), RowFont, RowForeBrush, CellBounds, CellFormat)
                        End If


    Note : code de la fonction ByteArrayToStream :
        ''' <summary>
        ''' Transforme un tableau d'octet en flux
        ''' </summary>
        ''' <param name="pBytes">Tableau à convertir</param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function ByteArrayToStream(ByRef pBytes As Byte()) As IO.Stream
            Dim lMem As New IO.MemoryStream
            lMem.Write(pBytes, 0, pBytes.Length)
            Return lMem
        End Function


    Et dans Calculate :
    tmpSize = g.MeasureString(TheDataGridView.Rows(j).Cells(i).EditedFormattedValue.ToString(), tmpFont)

    remplacé par :

                        'Modification NH : gestion des images
                        If TypeOf TheDataGridView.Rows(j).Cells(i).Value Is Byte() Then
                            tmpSize = Bitmap.FromStream(ByteArrayToStream(DirectCast(TheDataGridView.Rows(j).Cells(i).Value, Byte()))).Size
                        Else
                            tmpSize = g.MeasureString(TheDataGridView.Rows(j).Cells(i).EditedFormattedValue.ToString(), tmpFont)
                        End If


    Sinon, j'ai une question, que faut-il modifier pour forcer l'impression sur une seule page en largeur (comme dans Excel) ?

    Je note rarement les sources, mais là je fais une exception (9/10, car ne gérait pas les images et pas trouvé la possibilité de mettre sur une seule page).

  • signaler à un administrateur
    Commentaire de manulegosny le 09/04/2008 15:18:24

    Hello
    Dans mon cas ça ne fonctionne pas car les value dans mes cellules sont de type bitmap et non byte ... mais ça ne devrai pas être très différent ... en revanche un truc que j'ai remarqué c'est que l'impression des colonnes se fait dans l'ordre de création et non l'ordre réel  d'affichage ...

  • signaler à un administrateur
    Commentaire de Yurf98 le 17/06/2008 16:41:14

    Magnifique classe, qui fais economiser pas mal d heure...

    Ssns parler du fait que tu l es diffuser au Grand Public!

    10/10

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS