IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

DataTable + PDF


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Par défaut DataTable + PDF
    Bonjour à tous !

    Je viens avec vous les bras charger de questions concernant un problème auquel je suis confronté !

    J'ai actuellement tout un code qui me permet, a partir d'une feuille Excel, de remplire ligne par ligne mon DataTable puis d'avoir mon DataTable qui génère un PDF avec ces données (pour la faire simple).

    Mon problème est que, sur certains fichier Excel, le nombre de ligne qui sont ajouter dans mon DT sont trop importante pour rester sur 1 page et donc plusieurs pages se créer sans le HEADER sur chacune de ces pages. Le voila mon problème.

    Donc je voudrais créer artificiellement (car il n'y a pas de méthode qui permet de le faire automatiquement) un header sur chaque nouvelle page qui se créer. Et pour cela j'ai besoin de savoir si il existe une méthode qui pourrait me dire soit :

    - Voila nous sommes sur une nouvelle page du PDF

    - Voila nous sommes a la fin de la page PDF

    Je ne pense pas que mon problème trouvera réponse car la relation entre DT et PDF est inexistante au moment ou j'ajoute mes DataRow dans mon DT. Mais après tout j'ai peut être loupé une marche ?

    Merci de m'avoir lu et de vos futur réponse si il y en a !

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Par défaut
    Il y a personne qui aurait été confronté a ce problème la ? Je peux également partir sur une autre voie si cela me permet d'avoir un Header sur chacune de mes pages PDF ! Même si cela me fait changer du tout au tout ! (Enfin je préfèrerais que non ... )

    Je vous balance le code de la classe qui me permet de remplir mon Data Table (sans les sous-fonction) et je vous envoie le code également pour ce qui est de la génération du PdF

    Voila pour le DataTable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Function RemplirDataTable(ByVal CheminFichier As String, ByRef TabCol() As TabDonnee) As DataTable
            'Étape 1 : On initialise le DataTable qui sera renvoyé par la fonction une fois remplie'
            Dim ExcelTable As New DataTable
            'Étape 2 : On initialise un integer qui me permettra d’éviter de passer en paramètre la première ligne du fichier Excel qui correspond aux entêtes du fichier.'
            Dim Boucle As Integer = 0
            'Étape 3 : On initialise une variable qui représentera la feuille Excel déposé par l’adhérent.' 
            Dim wk As Infragistics.Excel.Workbook = Infragistics.Excel.Workbook.Load(CheminFichier)
            'Étape 4 : J'ouvre une gestion d'erreur'
            Try
                'Transaction - Étape 1 : Si le fichier envoyé par l’adhérent correspond bien à ce qui est attendu je récupère les index des colonnes' 
                'dans le fichier Excel avec la fonction Verif_Entete_Excel (…).'
                'Cette fonction permet de me retourner un booléen qui indique si oui ou non le fichier correspond aux critères attendus.'
                If Verif_Entete_Excel(wk, TabCol) Then
                    'Transaction - Étape 1.1 : On parcourt le tableau contenant les colonnes attendues. Afin d'être sur que l'indice ne sorte pas du tableau'
                    'Il faut prendre en compte le contenue TOTAL de l'arraylist (c'est à dire chaque éléments de chaque dimension) ET '
                    'Le nombre d'éléments dans la première valeur afin de connaître le nombre exact de dimension. Puis il suffit de diviser le global par le nombre de colonne'
                    'Pour obtenir l'index maximum de l'ArrayList
                    For i As Integer = 0 To TabCol.Length - 1 Step 1
                        'Transaction - Étape 1.1.1 : Si  l’index de la colonne est renseigne alors cela veut dire qu’il était présent dans'
                        'la feuille Excel et qu’il faut donc l’ajouter dans le DataTable car la cellule de cette colonne sera ajouté également'
                        If TabCol(i).ID = 0 Or TabCol(i).ID <> Nothing Then
                            'Transaction - Étape 1.1.1 : Je l’ajoute dans les colonnes du DataTable'
                            ExcelTable.Columns.Add(TabCol(i).Nom_Colonne, GetType(String))
                            ExcelTable.Columns.Item(i).Caption = TabCol(i).Nom_Colonne
                        End If
                    Next
                    'Transaction - Étape 1.2 : Pour chaque ligne dans la feuille Excel déposé par l’adhérent 
                    For Each wkrow As WorksheetRow In wk.WindowOptions.SelectedWorksheet.Rows
                        'Transaction - Étape 1.2.1 : Si la boucle est = 0 alors cela veut dire que la collection de cellule corresponds aux en-têtes de colonne. Comme je n'en veux pas'
                        'Je fais en sorte de ne pas ajouter la ligne.'
                        If Boucle = 0 Then
                            'On incrémente l'integer pour ne pas boucler indéfiniment
                            Boucle += 1
                            'Transaction - Étape 1.2.1.1 : Je regarde si il a des données dans les cellules passer en parametre'
                        Else
                            'Transaction - Étape 1.2.1.1.1 : Sinon on ajoute au datarow la ligne si elle n'est pas vide, via la fonction Ajout_Test_Donnees()
                            Ajout_Test_Donnees(wkrow.Cells, ExcelTable, TabCol)
                        End If
                    Next
                    'Étape 5 : Si le fichier n'est pas conforme alors le datatable retourner est vide.' Il faut donc remonter une erreur pour empêcher l'envoie d'un mail vide.'
                Else
                    Error 1
                End If
            Catch ex As Exception
                Throw ex
            End Try
            Return ExcelTable
        End Function

    Voila pour la génération du PDF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     UWG_Export.DataSource = RemplirDataTable(CheminStockage + NomFichier + ".xls", TabCol)
                'Transaction - Etape 5 : Etant donné que nous n'avons pas mis en "dur" les colonnes du Grid, il faut le Binder.
                UWG_Export.DataBind()
                Dim PdfStream As Stream
                Dim XlsStream As Stream
                'Transaction - Etape 6 : On ouvre une gestion d'erreur'
                Try
                    'Transaction 2 - Etape 1 : On crée le fichier au format PDF dans le dossier spécifié par File.Create '
                    PdfStream = File.Create((CheminStockage & "RAPPORTS\Rapport_" & NomFichier & ".pdf").ToString())
                    'Transaction 2 - Sur Exception'
                Catch ex As Exception
                    'Transaction 2 - Sur Exception - Etape 1 : On crée le dossier RAPPORTS à la suite de la variable CheminStockage'
                    'Pour pouvoir corriger l'erreur' 
                    Directory.CreateDirectory(CheminStockage & "RAPPORTS\")
                    'Transaction 2 - Sur Exception - Etape 2 : On enregistre le fichier PDF maintenant que l'on est sur que le chemin demander est présent'
                    PdfStream = File.Create((CheminStockage & "RAPPORTS\Rapport_" & NomFichier & ".pdf").ToString())
                End Try
                'Transaction - Etape 7 : A partir d'içi, 'on est certain que le dossier RAPPORTS éxiste (cf Transaction 2) donc on crée le fichier au format XLS
                'dans le dossier spécifié par File.Create'
                XlsStream = File.Create((CheminStockage & "RAPPORTS\Rapport_" & NomFichier & ".xls").ToString())
                'Transaction - Etape 8 : On génère les Rapports au format PDF & XLS'
                UWG_ExpDocPDF.Export(UWG_Export, PdfStream, True)
                UWG_DocExpXls.Export(UWG_Export, XlsStream)
                XlsStream.Close()

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/04/2015, 13h00
  2. Réponses: 0
    Dernier message: 22/09/2014, 12h08
  3. Extended datatable : PDF / EXCEL
    Par haskouse dans le forum JSF
    Réponses: 7
    Dernier message: 24/08/2009, 17h54
  4. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  5. [CR] exporter en PDF
    Par Nathy dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2002, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo