Мой вопрос об импорте excel в datagridview, но есть дополнительный случай.
У меня также есть база данных oledb с кодом магазина и названиями магазинов.
Я хочу, чтобы он показывал только коды хранения из базы данных, которые находятся в базе данных после импорта.
Мои коды здесь;
Dim conn As OleDbConnection
Dim dtr As OleDbDataReader
Dim dta As OleDbDataAdapter
Dim cmd As OleDbCommand
Dim dts As DataSet
Dim excel As String
Dim OpenFileDialog As New OpenFileDialog
OpenFileDialog1.FileName = ""
OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
OpenFileDialog1.Filter = "All Files (*.*)|*.*|Excel files (*.xlsx)|*.xlsx|CSV Files (*.csv)|*.csv|XLS Files (*.xls)|*xls"
If (OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
DataGridView1.Columns.Clear()
Dim fi As New FileInfo(OpenFileDialog1.FileName)
Dim FileName As String = OpenFileDialog1.FileName
excel = fi.FullName
conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
dta = New OleDbDataAdapter("Select * From [Sheet1$]", conn)
dts = New DataSet
dta.Fill(dts, "[Sheet1$]")
DataGridView1.DataSource = dts
DataGridView1.DataMember = "[Sheet1$]"
conn.Close()
End If
Во-первых извините за мой ужасный английский :)
Изображения следующим образом;
Я хочу, чтобы в сетке данных отображались только те, что в списке магазинов.. :\
1 ответ
Не совсем ясно, как выглядит ваша текущая презентация/дисплей, в чем проблема и как должна выглядеть желаемая презентация/дисплей. Но вы спросили о выборе только одной части импортируемых данных, которая предположительно находится только в одном столбце импортированных данных Excel.
Когда создается datatable
, он содержит столбцы и строки из рабочего листа Excel. Столбцы будут данными из первой строки, а строки будут записями из последующих строк на листе. Вы можете легко получить доступ как к данным заголовка, так и к данным строки. Приведенный ниже код ОЧЕНЬ грубый, но чтобы вы могли увидеть, как получить доступ к данным в datatable
, которые вы уже очень успешно импортировали, в приведенном выше ограниченном коде.
Dim columns = datatable.Columns
Dim rows = datatable.Rows
Dim columns1 = columns(0)
Dim rows1 = rows(0)
Dim element1 = rows1(0)
Столбцы будут иметь все заголовки, поэтому вы можете найти столбец с кодами или названиями магазинов. Тогда в строках будут данные для каждого магазина. Таким образом, выше, строки1 — это первая строка данных, а элемент1 — это данные в этой строке из столбцов1 и так далее. (0)
— это индекс соответствующих коллекций.
Вам, конечно, придется написать код для извлечения нужных данных и, при необходимости, устранения дубликатов, но все данные уже есть.
Надеемся, что получение данных в списке, а затем сортировка, фильтрация и выбор данных должны быть относительно простыми, но если нет, добавьте комментарий. Это какая-то другая проблема. Вы спрашивали о получении только кодов магазинов.
Добавлено: На основании ваших дополнительных изображений и объяснений вы хотите выполнить операцию SQL INNER JOIN. На странице w3schools.com о SQL INNER JOIN: «Ключевое слово INNER JOIN выбирает все строки из обеих таблиц, если между столбцами есть совпадение». Это то, чему вам придется учиться и учиться, но оно должно предоставить то, что вам нужно в данном случае. Вам нужно будет определить и построить обе таблицы, а затем выполнить JOIN.
И, кстати, вы также можете перейти по ссылке, указанной в первом комментарии TS, и если это решит вашу проблему, это гораздо более простое решение.
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию объектов или файлов Excel или по разработке формул. Вы можете комбинировать тег Excel с тегами и вопросами VBA, VSTO, C#, VB.NET, PowerShell, OLE и другими тегами и вопросами, связанными с программированием, если это применимо. НЕ используйте с другим программным обеспечением для работы с электронными таблицами, например [google-sheets].