Bonjour ! Alors j'ai actuellement un problème vraiment gênant !
J'ai un datagridview qui contient une multitude de données, le problème c'est que après la requête SQL, j'ai un tableau que je modifie pour avoir une belle mise en forme ! Le problème c'est que je lis le tableau pour le copier dans un PDF, mais le code me copie le datagridview sans les modifs que j'ai fais juste après... Du coup normalement j'ai ceci :
http://www.cjoint.com/doc/16_06/FFwh...Z_sfesfesf.PNG
Mais ça me donne cela :
http://www.cjoint.com/doc/16_06/FFwhr72NOaZ_open.PNG
L'ordre des colonnes est perdu, le format des dates, heures, arrondis avant la virgule...
Voilà mon code, ceci est mon bouton qui lance l'écriture dans le PDF :
Et mes modifs du datagridview qui sont bien sûr avant le bouton.
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
49
50
51
52
53
54
55 Private Sub Bt_calcul_Click(sender As System.Object, e As System.EventArgs) Handles Bt_calcul.Click If Form4_Ticket.Dtgdv_ticket.ColumnCount = 0 Then MsgBox("Veuillez choisir une entité et lancer une recherche svp") Exit Sub Else Dim pdfTable As New PdfPTable(Form4_Ticket.Dtgdv_ticket.ColumnCount) pdfTable.DefaultCell.Padding = 3 pdfTable.HorizontalAlignment = Element.ALIGN_CENTER pdfTable.DefaultCell.NoWrap = True For Each column As DataGridViewColumn In Form4_Ticket.Dtgdv_ticket.Columns Dim cell As New PdfPCell(New Phrase(column.HeaderText)) cell.BackgroundColor = New iTextSharp.text.BaseColor(240, 240, 240) pdfTable.AddCell(cell) Next Dim i As Integer = 0 For Each row As DataGridViewRow In Form4_Ticket.Dtgdv_ticket.Rows If Not Form4_Ticket.Dtgdv_ticket.Rows.Count = i + 1 Then For Each cell As DataGridViewCell In row.Cells If Not cell.Value.ToString = vbNullString Then Dim cellPDF As New PdfPCell(New Phrase(cell.Value.ToString())) pdfTable.AddCell(cellPDF) Else Exit For End If Next i = i + 1 Else Exit For End If Next Dim widths(Form4_Ticket.Dtgdv_ticket.Columns.Count - 1) As Integer For Each col As DataGridViewColumn In Form4_Ticket.Dtgdv_ticket.Columns widths(col.Index) = col.Width Next pdfTable.SetWidths(widths) Dim folderPath As String = "C:\Users\degecom\Desktop\PDF TEST" If Not Directory.Exists(folderPath) Then Directory.CreateDirectory(folderPath) End If Using stream As New FileStream(folderPath & "\test.pdf", FileMode.Create) Dim pdfDoc As New Document(PageSize.A2, 10.0F, 10.0F, 10.0F, 0.0F) PdfWriter.GetInstance(pdfDoc, stream) pdfDoc.Open() pdfDoc.Add(pdfTable) pdfDoc.Close() stream.Close() End Using AxAcroPDF1.src = "C:\Users\degecom\Desktop\PDF TEST\test.pdf" End If End Sub
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 Dtgdv_ticket.Columns("Type").DisplayIndex = 1 Dtgdv_ticket.Columns("T.actiontime / 60").HeaderText = "Duré ticket (min)" Dtgdv_ticket.Columns("TT.actiontime / 60").HeaderText = "Duré tache (min)" Dtgdv_ticket.Columns("date").DefaultCellStyle.Format = "d" Dtgdv_ticket.Columns("T.actiontime / 60").DefaultCellStyle.Format = "n0" Dtgdv_ticket.Columns("TT.actiontime / 60").DefaultCellStyle.Format = "n0" Dtgdv_ticket.Columns("name").HeaderText = "Titre" Dtgdv_ticket.Columns("date1").HeaderText = "Date ticket" Dtgdv_ticket.Columns("content").HeaderText = "Description ticket" Dtgdv_ticket.Columns("content1").HeaderText = "Description tache" Dtgdv_ticket.Columns("date1").HeaderText = "Date tache" Dtgdv_ticket.Columns("date2").HeaderText = "Heure de la tache" 'Dtgdv_ticket.DefaultCellStyle.WrapMode = DataGridViewTriState.True Dtgdv_ticket.Columns("date").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader Dtgdv_ticket.Columns("date1").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader Dtgdv_ticket.Columns("date2").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader Dtgdv_ticket.Columns("T.actiontime / 60").AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells Dtgdv_ticket.Columns("TT.actiontime / 60").AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells Dtgdv_ticket.Columns("Type").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader
Partager