Member 13052135 Ответов: 1

Как я могу импортировать файлы excel в базу данных SQL


привет ребята
Итак, у меня была эта проблема с простым проектом, который я строю, я хотел импортировать более одного файла excel в таблицы в базе данных.
Я мог импортировать только один файл в таблицу, поэтому я хочу импортировать несколько файлов excel в несколько таблиц базы данных. кто-нибудь может мне помочь ? Я был бы вам очень признателен

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

вот код, который я использую, и он работает только для импорта одного файла в одну таблицу, а мне нужно импортировать более одного файла в разные таблицы базы данных.


Dim koneksi_excel As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & TextBox1.Text & "';Extended Properties=""Excel 12.0 Xml;HDR=YES""")
       koneksi_excel.Open()
       Dim query_excel As String = "Select * from [Sheet1$]"
       Dim cmd As OleDbCommand = New OleDbCommand(query_excel, koneksi_excel)
       Dim rd As OleDbDataReader
       rd = cmd.ExecuteReader()

       Dim koneksi As New SqlConnection()
       Dim koneksidatabase As String = "server=DESKTOP-KJQ8PNO\SQLEXPRESS;DATABASE=otto;Integrated Security=True"
       koneksi.ConnectionString = koneksidatabase
       koneksi.Open()

       Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(koneksi)
           bulkcopy.DestinationTableName = "DAFTAR1"
           bulkcopy.BulkCopyTimeout = 600
           bulkcopy.WriteToServer(rd)
           rd.Close()
           koneksi.Close()

           MsgBox("Data uploaded to database", MsgBoxStyle.Information, "Uploaded")
           TextBox1.Text = ""
       End Using

   End Sub



С уважением

Ник

Michael_Davies

Что не работает, то работает так, как вы говорите, что он успешно импортирует файл.

Помогите нам помочь вам, "это не сработает" ничего не значит.

Нажмите кнопку улучшить вопрос и дайте подробную информацию о том, что не работает, если это просто необходимость импортировать несколько файлов в одну таблицу или отдельные таблицы?

Member 13052135

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

Michael_Davies

Итак, что вам нужно сделать, это;

1. sub, который собирает имена файлов для импорта, а затем использует цикл для вызова 2. ниже с именем файла и именем таблицы.

2. sub, который принимает имя файла и имя таблицы в качестве строковых параметров, содержащих код, который вы уже показали, используя параметры для имени файла и имени таблицы.

Дело сделано.

Member 13052135

Сначала я попробую разобраться
спасибо Чувак я действительно ценю это

1 Ответов

Рейтинг:
0

Michael_Davies

Вот ваш код для части 2 моих комментариев, скорректированный для выполнения задачи импорта одного файла, все, что вам нужно сделать, это написать sub, который собирает имена файлов, и вызвать sub ниже для каждого файла по очереди;

Public Sub ImportExcelFielToTable(ExcelFile As String, TargetTable As String)
Dim koneksi_excel As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & ExcelFile & "';Extended Properties=""Excel 12.0 Xml;HDR=YES""")
        koneksi_excel.Open()
        Dim query_excel As String = "Select * from [Sheet1$]"
        Dim cmd As OleDbCommand = New OleDbCommand(query_excel, koneksi_excel)
        Dim rd As OleDbDataReader
        rd = cmd.ExecuteReader()

        Using koneksi As New SqlConnection("server=DESKTOP-KJQ8PNO\SQLEXPRESS;DATABASE=otto;Integrated Security=True")
        koneksi.Open()

        Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(koneksi)
            bulkcopy.DestinationTableName = TargetTable
            bulkcopy.BulkCopyTimeout = 600
            bulkcopy.WriteToServer(rd)
            rd.Close()

            MsgBox("Data uploaded to database", MsgBoxStyle.Information, "Uploaded")
            TextBox1.Text = ""
        End Using
        koneksi.Close()
      End Using
    End Sub


Member 13052135

Я понимаю, что пишу sub для сбора имен файлов.
Я новичок в vb

Michael_Davies

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

Как вы соберете список, зависит от вас, мы не посвящены в то, как вы работаете с файлами, и есть более чем один способ сделать это.

Вы можете представить пользователю список флажков XL-файлов в указанном каталоге и позволить пользователю щелкнуть те, которые он хочет импортировать, вы также можете настроить часы в каталоге и импортировать, а затем удалить любой XL-файл, упавший в него. Список можно продолжать.

Для получения списка файлов проверьте ; https://msdn.microsoft.com/en-us/library/ms127994(v=против 110). aspx