samir1286 Ответов: 2

Как импортировать большой файл excel в datatable


Как импортировать большой файл Excel в Datatable in Vb.net

Размер листа Excel составит 165 МБ.

Файл Excel, имеющий более 9 Лакхов записей.

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

Dim excelsheet As [String]() = New [String](dtsheet.Rows.Count - 1) {}

            Dim i As Integer = 0
            For Each row As DataRow In dtsheet.Rows
                excelsheet(i) = row("TABLE_NAME").ToString()
                Dim da As New OleDb.OleDbDataAdapter("Select * " + _
                                                 " From [" + excelsheet(i) + "]", strCon)
                da.Fill(ds)
                Exit For
                i += 1
            Next


Заполните набор данных примерно от 5000 до 6000 строк, но в Excel есть 9 лакхов строк.
Не полный файл, прочитанный OleDbDataAdapter.
дайте мне решение.

я также использую средство импорта Sql, но оно не будет работать.

W∴ Balboos, GHB

Дим excelsheet как [строковое]() = новый [строковое](dtsheet.Строк.Количество-1) {}

На мой взгляд, это не похоже на C#.

Я буду немного полезен: если ваши листы не очень хорошо заполнены (то есть нет смешанных столбцов чисел в одних строках и символов в других), то ваш импорт будет довольно сложным и несговорчивым, поскольку типы данных будут постоянно меняться,

2 Ответов

Рейтинг:
2

Maciej Los

+5 за ссылку ;)

Mehdi Gholam

Спасибо Мацей!

Рейтинг:
2

Maciej Los

Чтобы справиться с этой задачей, вы должны выполнить следующие шаги:


  1. Подключение к листу Excel с помощью Метод oledbconnection[^]
  2. Создавать Объект oledbcommand[^], чтобы прочитать данные, используя И oledbdatareader[^]
  3. Загрузка данных в DataTable[^]
  4. Отсоединить с листа Excel
  5. Подключитесь к базе данных SQL с помощью Объект sqlconnection[^]
  6. Копирование данных в таблицу SQL с помощью Класс SqlBulkCopy[^]
  7. Отключитесь от базы данных Sql


Вот и все! Попробуй!

Примечание:не перебирайте коллекцию строк в листе Excel! В этом причина ваших проблем.


Mehdi Gholam

5 ЕД

Maciej Los

Спасибо, Мехди.