Мой код для экспорта DataGridView в PDF Использование данных с привязкой к базе данных MS Access не работает - PullRequest
0 голосов
/ 16 апреля 2019

После поиска данных я установил видимость некоторых нежелательных столбцов false и соответственно улучшил представление данных.После уточнения я хотел экспортировать сетку данных в pdf-файл, но когда я дал путь и сохранил его, по указанному пути не было сохранено ни одного файла, хотя он показывал успешно сохраненные.Во время отладки я обнаружил, что доступны все строки в необработанном формате.

==============================================================================

Dim mRow As Integer = 0
Dim newpage As Boolean = True

Dim rdr As OleDbDataReader = Nothing
Dim DTable As DataTable
Dim Conn As OleDbConnection = Nothing
Dim adp As OleDbDataAdapter
Dim DS As DataSet
Dim comd As OleDbCommand = Nothing
Dim DT As DataTable
Dim cs As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "C:/Users/khuba/OneDrive/Desktop/CS-IA (Final-Draft).accdb;"


Private Sub Form10_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ''TODO: This line of code loads data into the '_CS_IA__Final_Draft_DataSet_X_1.Question_Bank' table. You can move, or remove it, as needed.
    Me.Question_BankTableAdapter1.Fill(Me._CS_IA__Final_Draft_DataSet_X_1.Question_Bank)

    SaveFileDialog1.FileName = ""
    SaveFileDialog1.Filter = "PDF (*.pdf)|.pdf"

    TextBox7.Text = "" 'Title
    TextBox8.Text = "" 'File Location

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Form11.Show()
    Me.Close()
End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    Try
        Conn = New OleDbConnection(cs)
        Conn.Open()

        comd = New OleDbCommand("Select (Question_ID) as [Question_ID], (Level_ID) as [Level_ID], (Paper_ID) as [Paper_ID], (Year_ID) as [Year_ID], (Topic_ID) as [Topic_ID], (Session_ID) as [Session_ID], (TZ_ID) as [TZ_ID], (Question_gist) as [Question_gist], [Option A] as [Option A], [Option B] as [Option B], [Option C] as [Option C], [Option D] as [Option D], (Answer) as [Answer] FROM [Question_Bank] where [Level_ID] Like'%" & TextBox1.Text & "%' AND [Paper_ID] Like'%" & TextBox6.Text & "%' AND [Year_ID] Like'%" & TextBox2.Text & "%' AND [Session_ID] Like'%" & TextBox5.Text & "%' AND [TZ_ID] Like'%" & TextBox4.Text & "%' AND [Topic_ID] Like'%" & TextBox3.Text & "%' order by [Question_ID]", Conn)
        comd.Connection = Conn

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(comd)
        Dim myDataSet As DataSet = New DataSet()
        myDA.Fill(myDataSet, "Question_Bank")
        DataGridView1.DataSource = myDataSet.Tables("Question_Bank").DefaultView

        Conn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

    End Try
End Sub

Private Sub TextBox6_TextChanged(sender As Object, e As EventArgs) Handles TextBox6.TextChanged
    Try
        Conn = New OleDbConnection(cs)
        Conn.Open()

        comd = New OleDbCommand("Select (Question_ID) as [Question_ID], (Level_ID) as [Level_ID], (Paper_ID) as [Paper_ID], (Year_ID) as [Year_ID], (Topic_ID) as [Topic_ID], (Session_ID) as [Session_ID], (TZ_ID) as [TZ_ID], (Question_gist) as [Question_gist], [Option A] as [Option A], [Option B] as [Option B], [Option C] as [Option C], [Option D] as [Option D], (Answer) as [Answer] FROM [Question_Bank] where [Level_ID] Like'%" & TextBox1.Text & "%' AND [Paper_ID] Like'%" & TextBox6.Text & "%' AND [Year_ID] Like'%" & TextBox2.Text & "%' AND [Session_ID] Like'%" & TextBox5.Text & "%' AND [TZ_ID] Like'%" & TextBox4.Text & "%' AND [Topic_ID] Like'%" & TextBox3.Text & "%' order by [Question_ID]", Conn)
        comd.Connection = Conn

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(comd)
        Dim myDataSet As DataSet = New DataSet()
        myDA.Fill(myDataSet, "Question_Bank")
        DataGridView1.DataSource = myDataSet.Tables("Question_Bank").DefaultView

        Conn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
    Try
        Conn = New OleDbConnection(cs)
        Conn.Open()

        comd = New OleDbCommand("Select (Question_ID) as [Question_ID], (Level_ID) as [Level_ID], (Paper_ID) as [Paper_ID], (Year_ID) as [Year_ID], (Topic_ID) as [Topic_ID], (Session_ID) as [Session_ID], (TZ_ID) as [TZ_ID], (Question_gist) as [Question_gist], [Option A] as [Option A], [Option B] as [Option B], [Option C] as [Option C], [Option D] as [Option D], (Answer) as [Answer] FROM [Question_Bank] where [Level_ID] Like'%" & TextBox1.Text & "%' AND [Paper_ID] Like'%" & TextBox6.Text & "%' AND [Year_ID] Like'%" & TextBox2.Text & "%' AND [Session_ID] Like'%" & TextBox5.Text & "%' AND [TZ_ID] Like'%" & TextBox4.Text & "%' AND [Topic_ID] Like'%" & TextBox3.Text & "%' order by [Question_ID]", Conn)
        comd.Connection = Conn

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(comd)
        Dim myDataSet As DataSet = New DataSet()
        myDA.Fill(myDataSet, "Question_Bank")
        DataGridView1.DataSource = myDataSet.Tables("Question_Bank").DefaultView

        Conn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
    Try
        Conn = New OleDbConnection(cs)
        Conn.Open()

        comd = New OleDbCommand("Select (Question_ID) as [Question_ID], (Level_ID) as [Level_ID], (Paper_ID) as [Paper_ID], (Year_ID) as [Year_ID], (Topic_ID) as [Topic_ID], (Session_ID) as [Session_ID], (TZ_ID) as [TZ_ID], (Question_gist) as [Question_gist], [Option A] as [Option A], [Option B] as [Option B], [Option C] as [Option C], [Option D] as [Option D], (Answer) as [Answer] FROM [Question_Bank] where [Level_ID] Like'%" & TextBox1.Text & "%' AND [Paper_ID] Like'%" & TextBox6.Text & "%' AND [Year_ID] Like'%" & TextBox2.Text & "%' AND [Session_ID] Like'%" & TextBox5.Text & "%' AND [TZ_ID] Like'%" & TextBox4.Text & "%' AND [Topic_ID] Like'%" & TextBox3.Text & "%' order by [Question_ID]", Conn)
        comd.Connection = Conn

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(comd)
        Dim myDataSet As DataSet = New DataSet()
        myDA.Fill(myDataSet, "Question_Bank")
        DataGridView1.DataSource = myDataSet.Tables("Question_Bank").DefaultView

        Conn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

Private Sub TextBox5_TextChanged(sender As Object, e As EventArgs) Handles TextBox5.TextChanged
    Try
        Conn = New OleDbConnection(cs)
        Conn.Open()

        comd = New OleDbCommand("Select (Question_ID) as [Question_ID], (Level_ID) as [Level_ID], (Paper_ID) as [Paper_ID], (Year_ID) as [Year_ID], (Topic_ID) as [Topic_ID], (Session_ID) as [Session_ID], (TZ_ID) as [TZ_ID], (Question_gist) as [Question_gist], [Option A] as [Option A], [Option B] as [Option B], [Option C] as [Option C], [Option D] as [Option D], (Answer) as [Answer] FROM [Question_Bank] where [Level_ID] Like'%" & TextBox1.Text & "%' AND [Paper_ID] Like'%" & TextBox6.Text & "%' AND [Year_ID] Like'%" & TextBox2.Text & "%' AND [Session_ID] Like'%" & TextBox5.Text & "%' AND [TZ_ID] Like'%" & TextBox4.Text & "%' AND [Topic_ID] Like'%" & TextBox3.Text & "%' order by [Question_ID]", Conn)
        comd.Connection = Conn

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(comd)
        Dim myDataSet As DataSet = New DataSet()
        myDA.Fill(myDataSet, "Question_Bank")
        DataGridView1.DataSource = myDataSet.Tables("Question_Bank").DefaultView

        Conn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

Private Sub TextBox4_TextChanged(sender As Object, e As EventArgs) Handles TextBox4.TextChanged
    Try
        Conn = New OleDbConnection(cs)
        Conn.Open()

        comd = New OleDbCommand("Select (Question_ID) as [Question_ID], (Level_ID) as [Level_ID], (Paper_ID) as [Paper_ID], (Year_ID) as [Year_ID], (Topic_ID) as [Topic_ID], (Session_ID) as [Session_ID], (TZ_ID) as [TZ_ID], (Question_gist) as [Question_gist], [Option A] as [Option A], [Option B] as [Option B], [Option C] as [Option C], [Option D] as [Option D], (Answer) as [Answer] FROM [Question_Bank] where [Level_ID] Like'%" & TextBox1.Text & "%' AND [Paper_ID] Like'%" & TextBox6.Text & "%' AND [Year_ID] Like'%" & TextBox2.Text & "%' AND [Session_ID] Like'%" & TextBox5.Text & "%' AND [TZ_ID] Like'%" & TextBox4.Text & "%' AND [Topic_ID] Like'%" & TextBox3.Text & "%' order by [Question_ID]", Conn)
        comd.Connection = Conn

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(comd)
        Dim myDataSet As DataSet = New DataSet()
        myDA.Fill(myDataSet, "Question_Bank")
        DataGridView1.DataSource = myDataSet.Tables("Question_Bank").DefaultView

        Conn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Me.DataGridView1.Columns("DataGridViewTextBoxColumn2").Visible = False
    Me.DataGridView1.Columns("DataGridViewTextBoxColumn3").Visible = False
    Me.DataGridView1.Columns("DataGridViewTextBoxColumn4").Visible = False
    Me.DataGridView1.Columns("DataGridViewTextBoxColumn5").Visible = False
    Me.DataGridView1.Columns("DataGridViewTextBoxColumn6").Visible = False
    Me.DataGridView1.Columns("DataGridViewTextBoxColumn7").Visible = False
End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    SaveFileDialog1.FileName = ""
    If SaveFileDialog1.ShowDialog = DialogResult.OK Then
        TextBox8.Text = SaveFileDialog1.FileName
    End If
End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

    Dim Paragraph As New Paragraph


    Dim PdfFile As New Document(PageSize.A4, 40, 40, 40, 20)


    PdfFile.AddTitle(TextBox7.Text)
    Using Stream As New FileStream("TextBox8.Text" & "TextBox7.Text", FileMode.Create)


        PdfWriter.GetInstance(PdfFile, New FileStream(TextBox7.Text, FileMode.Create))
        'Dim Write As PdfWriter = PdfWriter.GetInstance(PdfFile, New FileStream(TextBox7.Text, FileMode.Create))


        PdfFile.Open()


        Dim pTitle As New Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 14, iTextSharp.text.Font.BOLD, BaseColor.BLACK)


        Dim pTable As New Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 12, iTextSharp.text.Font.NORMAL, BaseColor.BLACK)


        Paragraph = New Paragraph(New Chunk(TextBox7.Text, pTitle))


        Paragraph.Alignment = Element.ALIGN_CENTER


        Paragraph.SpacingAfter = 5.0F


        PdfFile.Add(Paragraph)


        Dim PdfTable As New PdfPTable(DataGridView1.Columns.Count)


        PdfTable.TotalWidth = 500.0F


        PdfTable.LockedWidth = True


        Dim widths(0 To DataGridView1.Columns.Count - 1) As Single


        For i As Integer = 0 To DataGridView1.Columns.Count - 1


            widths(i) = 1.0F


        Next


        PdfTable.SetWidths(widths)


        PdfTable.HorizontalAlignment = 0


        PdfTable.SpacingBefore = 5.0F



        Dim pdfcell As PdfPCell = New PdfPCell


        For i As Integer = 0 To DataGridView1.Columns.Count - 1


            pdfcell = New PdfPCell(New Phrase(New Chunk(DataGridView1.Columns(i).HeaderText, pTable)))


            pdfcell.HorizontalAlignment = PdfPCell.ALIGN_LEFT


            PdfTable.AddCell(pdfcell)


        Next


        For i As Integer = 0 To DataGridView1.Rows.Count - 2


            For j As Integer = 0 To DataGridView1.Columns.Count - 1


                pdfcell = New PdfPCell(New Phrase(DataGridView1(j, i).Value.ToString(), pTable))


                PdfTable.HorizontalAlignment = PdfPCell.ALIGN_LEFT


                PdfTable.AddCell(pdfcell)


            Next


        Next

        PdfFile.Add(PdfTable)


        PdfFile.Close()
        Stream.Close()

    End Using

    MessageBox.Show("PDF format success exported !", "Informations", MessageBoxButtons.OK, MessageBoxIcon.Information)


End Sub

========================================================================

1 Ответ

0 голосов
/ 16 апреля 2019

Привет, ты также должен сохранить новый созданный документ

Using stream As New FileStream(folderPath & "test2.pdf", FileMode.Create)
PdfWriter.GetInstance(PdfFile, stream)
PdfFile.Close()
stream.Close()
End Using
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...