EXPORTAE PARA PDF

 Tópico anterior Próximo tópico Novo tópico

EXPORTAE PARA PDF

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#492666 - 15/02/2020 18:50:36

AMORIM
PALMAS/TOCANTINS
Cadast. em:Agosto/2015


Última edição em 15/02/2020 18:51:08 por AMORIM

Pessoal não estou com conseguindo alinhar as coluna exporto para pdf o que estou fazendo de errado

   Public Sub ExportarDatosPDF(ByVal Document As Document)
        Dim Datatable As New PdfPTable(FrmCadastroProdutos.dgvProdutos.ColumnCount)
        Datatable.DefaultCell.Padding = 3
        Dim headerwidths As Single() = GetColumnasSize(FrmCadastroProdutos.dgvProdutos)
        Datatable.SetWidths(headerwidths)
        Datatable.WidthPercentage = 100
        Datatable.DefaultCell.BorderWidth = 2
        Dim encabezedo As New Paragraph("Reporte de Vendas", New Font(Font.NORMAL, 20, Font.BOLD))
        Dim texto As New Paragraph("Reporte de Vendas realizadas:" + Now.Date(), New Font(Font.NORMAL, 14, Font.BOLD))
        Dim Espaco As New Paragraph(vbCrLf)
        For i As Integer = 0 To FrmCadastroProdutos.dgvProdutos.ColumnCount - 1
            Datatable.AddCell(FrmCadastroProdutos.dgvProdutos.Columns(i).HeaderText)
        Next
        Datatable.HeaderRows = 1
        Datatable.DefaultCell.BorderWidth = 1
        For i As Integer = 0 To FrmCadastroProdutos.dgvProdutos.RowCount - 1
            For j As Integer = 0 To FrmCadastroProdutos.dgvProdutos.ColumnCount - 1
                Datatable.AddCell(FrmCadastroProdutos.dgvProdutos(j, i).Value.ToString())
                If FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(0).Value.ToString Then
                    Datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER
                ElseIf FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(1).Value.ToString Then
                    Datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER
                ElseIf FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(2).Value.ToString Then
                    Datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER
                ElseIf FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(3).Value Then
                    Datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER
                ElseIf FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(4).Value.ToString Then
                    Datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER
                ElseIf FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(5).Value.ToString Then
                    Datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT
                ElseIf FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(6).Value.ToString Then
                    Datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT
                End If
            Next
            Datatable.CompleteRow()
        Next
        Document.Add(encabezedo)
        Document.Add(texto)
        Document.Add(Espaco)
        Document.Add(Datatable)
    End Sub




#492674 - 16/02/2020 14:07:18

JABA
CABO FRIO
Cadast. em:Agosto/2005


Citação:
If FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(0).Value.ToString Then


Todos esses IFs que você está fazendo parece não estar certo. Faltou utilizar os critérios de igualdade/desigualdade. Caso esses campos forem um booleano, então basta apenas retirar o .ToString no final de cada um deles.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#492676 - 16/02/2020 19:10:27

AMORIM
PALMAS/TOCANTINS
Cadast. em:Agosto/2015


Os valores estão passando só não esta incluindo o alinhamento das colunas quando os dados e exportado para pdf  
      For i As Integer = 0 To FrmCadastroProdutos.dgvProdutos.RowCount - 1
            For j As Integer = 0 To FrmCadastroProdutos.dgvProdutos.ColumnCount - 1
                Datatable.AddCell(FrmCadastroProdutos.dgvProdutos(j, i).Value)
                If j = 0 Then
                    Datatable.HorizontalAlignment = HorizontalAlignment.Center
                End If
                If j = 1 Then
                    Datatable.HorizontalAlignment = HorizontalAlignment.Center
                End If
                If j = 2 Then
                    Datatable.HorizontalAlignment = HorizontalAlignment.Center
                End If
                If j = 3 Then
                    Datatable.HorizontalAlignment = HorizontalAlignment.Center
                End If
                If j = 4 Then
                    Datatable.HorizontalAlignment = HorizontalAlignment.Center
                End If
                If j = 5 Then
                    Datatable.HorizontalAlignment = HorizontalAlignment.Right
                End If
                If j = 6 Then
                    Datatable.HorizontalAlignment = HorizontalAlignment.Right
                End If
            Next



#492677 - 16/02/2020 19:59:32

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Amorim, acho que o alinhamento está ficando de acordo com a ultima linha do grid, pois vc está alinhando a tabela toda
Citação:
   Datatable.HorizontalAlignment = HorizontalAlignment.Center


não a célula ou a linha inserida


O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#492678 - 16/02/2020 20:16:28

AMORIM
PALMAS/TOCANTINS
Cadast. em:Agosto/2015


Mais como eu faço para alinhar as colunas?



#492699 - 17/02/2020 16:07:07

JABA
CABO FRIO
Cadast. em:Agosto/2005


A formatação precisa ser feita no DataGridView, não no DataTable.

Ex:

dataGridView1.Columns(indice).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#492703 - 17/02/2020 21:59:33

AMORIM
PALMAS/TOCANTINS
Cadast. em:Agosto/2015


Última edição em 21/02/2020 18:36:42 por AMORIM

Função para exportar dados do datagridview  para PDF com alinhamento das colunas pra quem precisar e só adaptar

Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.Font
Imports iTextSharp.text.pdf

    Private Sub ExportDaTdaToPDFTable(ByVal Document As Document)
        Dim font12bold As New iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8.0F, iTextSharp.text.Font.BOLD, BaseColor.BLACK)
        Dim font12Normal As New iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8.0F, iTextSharp.text.Font.NORMAL, BaseColor.BLACK)


        Dim encabezedo As New Paragraph("Reporte de Vendas", New Font(Font.NORMAL, 20, Font.BOLD))
        Dim texto As New Paragraph("Reporte de Vendas realizadas:" + Now.Date(), New Font(Font.NORMAL, 14, Font.BOLD))
        Dim Espaco As New Paragraph(vbCrLf)

        Document.Open()
        Document.Add(encabezedo)
        Document.Add(texto)
        Document.Add(Espaco)

        Dim pdfTable As New PdfPTable(7)
        pdfTable.TotalWidth = 530.0F
        pdfTable.LockedWidth = True

        Dim widths As Single() = New Single() {1.5F, 0.5F, 4.5F, 1.0F, 1.0F, 2.0F, 2.0F}
        pdfTable.SetWidths(widths)
        pdfTable.HorizontalAlignment = 1
        pdfTable.SpacingBefore = 2.0F

        Dim PdfCell As PdfPCell = Nothing
        PdfCell = New PdfPCell(New Phrase(New Chunk("Cod. Produto:", font12bold)))
        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
        pdfTable.AddCell(PdfCell)

        PdfCell = New PdfPCell(New Phrase(New Chunk("Un:", font12bold)))
        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
        pdfTable.AddCell(PdfCell)

        PdfCell = New PdfPCell(New Phrase(New Chunk("Descrição do Produto:", font12bold)))
        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
        pdfTable.AddCell(PdfCell)

        PdfCell = New PdfPCell(New Phrase(New Chunk("Estoque:", font12bold)))
        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
        pdfTable.AddCell(PdfCell)

        PdfCell = New PdfPCell(New Phrase(New Chunk("Situação:", font12bold)))
        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
        pdfTable.AddCell(PdfCell)

        PdfCell = New PdfPCell(New Phrase(New Chunk("Preço de Venda:", font12bold)))
        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
        pdfTable.AddCell(PdfCell)

        PdfCell = New PdfPCell(New Phrase(New Chunk("Preço de Atacado:", font12bold)))
        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
        pdfTable.AddCell(PdfCell)

        Dim dt As DataTable = GetDataTable()
        If dt IsNot Nothing Then
            For rows As Integer = 0 To dt.Rows.Count - 1
                For Column As Integer = 0 To dt.Columns.Count - 1
                    PdfCell = New PdfPCell(New Phrase(dt.Rows(rows)(Column).ToString, font12Normal))
                    If Column = 2 Then
                        PdfCell.HorizontalAlignment = Element.ALIGN_LEFT
                        pdfTable.AddCell(PdfCell)
                    ElseIf Column = 5 Or Column = 6 Then
                        PdfCell.HorizontalAlignment = Element.ALIGN_RIGHT
                        pdfTable.AddCell(PdfCell)
                    Else
                        PdfCell.HorizontalAlignment = Element.ALIGN_CENTER
                        pdfTable.AddCell(PdfCell)
                    End If
                Next
            Next
            Document.Add(pdfTable)
        End If
        Document.Close()
    End Sub

    Public Sub EstarExportPDF()
        Try
            Dim doc As New Document(iTextSharp.text.PageSize.A4, 40, 40, 40, 10)
            Dim filename As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory) + "Lista de vendas.pdf"
            Dim file As New FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)
            PdfWriter.GetInstance(doc, file)
            doc.Open()
            ExportDaTdaToPDFTable(doc)
            doc.Close()
            Process.Start(filename)
        Catch ex As Exception
            MessageBox.Show("Erro : " + ex.Message)
        End Try
    End Sub

    Public Function GetDataTable() As DataTable
        Dim dataTable As New DataTable("MyDataTable")
        Dim Datacolumns0 As New DataColumn(FrmCadastroProdutos.dgvProdutos.Columns(0).HeaderText.ToString, GetType(String))
        Dim Datacolumns1 As New DataColumn(FrmCadastroProdutos.dgvProdutos.Columns(1).HeaderText.ToString, GetType(String))
        Dim Datacolumns2 As New DataColumn(FrmCadastroProdutos.dgvProdutos.Columns(2).HeaderText.ToString, GetType(String))
        Dim Datacolumns3 As New DataColumn(FrmCadastroProdutos.dgvProdutos.Columns(3).HeaderText.ToString, GetType(String))
        Dim Datacolumns4 As New DataColumn(FrmCadastroProdutos.dgvProdutos.Columns(4).HeaderText.ToString, GetType(String))
        Dim Datacolumns5 As New DataColumn(FrmCadastroProdutos.dgvProdutos.Columns(5).HeaderText.ToString, GetType(String))
        Dim Datacolumns6 As New DataColumn(FrmCadastroProdutos.dgvProdutos.Columns(6).HeaderText.ToString, GetType(String))
        dataTable.Columns.Add(Datacolumns0)
        dataTable.Columns.Add(Datacolumns1)
        dataTable.Columns.Add(Datacolumns2)
        dataTable.Columns.Add(Datacolumns3)
        dataTable.Columns.Add(Datacolumns4)
        dataTable.Columns.Add(Datacolumns5)
        dataTable.Columns.Add(Datacolumns6)
        Dim DataRow As DataRow
        For i As Integer = 0 To FrmCadastroProdutos.dgvProdutos.Rows.Count - 1
            DataRow = dataTable.NewRow
            DataRow(FrmCadastroProdutos.dgvProdutos.Columns(0).HeaderText.ToString) = FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(0).Value.ToString
            DataRow(FrmCadastroProdutos.dgvProdutos.Columns(1).HeaderText.ToString) = FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(1).Value.ToString
            DataRow(FrmCadastroProdutos.dgvProdutos.Columns(2).HeaderText.ToString) = FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(2).Value.ToString
            DataRow(FrmCadastroProdutos.dgvProdutos.Columns(3).HeaderText.ToString) = FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(3).Value.ToString
            DataRow(FrmCadastroProdutos.dgvProdutos.Columns(4).HeaderText.ToString) = FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(4).Value.ToString
            DataRow(FrmCadastroProdutos.dgvProdutos.Columns(5).HeaderText.ToString) = FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(5).Value.ToString
            DataRow(FrmCadastroProdutos.dgvProdutos.Columns(6).HeaderText.ToString) = FrmCadastroProdutos.dgvProdutos.Rows(i).Cells(6).Value.ToString
            dataTable.Rows.Add(DataRow)
        Next
        dataTable.AcceptChanges()
        Return dataTable
    End Function





#492713 - 19/02/2020 16:59:42

JABA
CABO FRIO
Cadast. em:Agosto/2005


AMORIM, tá muito feio esse código. Dá pra dar uma boa refatorada nele, eliminando muitas linhas de código.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#492733 - 21/02/2020 16:40:43

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Vê esse link:
[url=https://] blog.cedrotech.com/criando-um-arquivo-pdf-com-itextsharp/ [/url]

O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#492747 - 26/02/2020 07:18:33

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Última edição em 26/02/2020 07:21:03 por PERCIFILHO

Pode usar o ITextSharp ou o PdfSharp.

  PDFSharp

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário