kyrons Ответов: 1

Как экспортировать данные выбранных столбцов из базы данных в excel с помощью VB.NET-что?


У меня есть только одна кнопка на моей форме windows, кнопка, которая выполняет экспорт данных из базы данных в excel.
Он работает при экспорте, но все эти столбцы в базе данных были экспортированы. Я хочу экспортировать только те конкретные/выбранные/нужные столбцы. Я не хочу экспортировать все столбцы. Я также хочу экспортировать выбранные столбцы из базы данных в выбранные столбцы в excel. Например: column1, column4 и column 6 данные базы данных, которые будут экспортированы в столбцы: A,C,D excel. Надеюсь, вы мне поможете. Спасибо.

Что я уже пробовал:

Я попробовал код ниже, но он экспортирует все столбцы.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dbSource As String
        Dim sql As String
        Dim sqlcon As New OleDb.OleDbConnection
        Dim ds As New DataSet
        Dim dbProvider As String
        Dim i, j As Integer

        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value

        xlApp = New Excel.Application
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("sheet1")

        dbProvider = "Provider=Microsoft.ACE.OLEDB.15.0;"
        dbProvider = "Provider=Microsoft.ACE.OLEDB.12.0;"
        dbSource = "Data Source =psipop.accdb;Jet OLEDB:Database Password=cscfo13poppsi; "
        sqlcon.ConnectionString = dbProvider & dbSource

        sql = "SELECT * FROM publicationinfo"
        Dim dscmd = New OleDb.OleDbDataAdapter(sql, sqlcon)
        dscmd.Fill(ds)

        For i = 0 To ds.Tables(0).Rows.Count - 1
            For j = 0 To ds.Tables(0).Columns.Count - 1
                xlWorkSheet.Cells(i + 18, j + 1) = ds.Tables(0).Rows(i).Item(j) '+18 here is the rownumber(i) and +1 is the columnnumber(j)
            Next
        Next

        xlWorkSheet.SaveAs("C:\Users\Admin\Desktop\vbexcel.xlsx")
        xlWorkBook.Close()
        xlApp.Quit()

        releaseObject(xlApp)
        releaseObject(xlWorkBook)
        releaseObject(xlWorkSheet)

        sqlcon.Close()

        MsgBox("You can find the file C:\Users\Admin\Desktop\vbexcel.xlsx")
    End Sub

    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub

1 Ответов

Рейтинг:
9

Patrice T

Цитата:
Я попробовал код ниже, но он экспортирует все столбцы.

Наверное, потому что это
sql = "SELECT * FROM publicationinfo"

запросите все столбцы из базы данных.
Либо вы должны сказать, какие столбцы вы хотите в SQL-запросе, либо вы должны отфильтровать их при записи в excel.

инструкция SQL Select[^]


kyrons

Спасибо..Я не заметил *(значит все). Теперь я пересмотрел инструкцию sql на: sql = "SELECT column1, column4, column6 FROM publicationinfo", и она работает.