如何将excel导入到datagrid,然后通过db值进行过滤。

问题描述 投票:0回答:1

我的问题是关于导入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

首先对不起我糟糕的英语:)

图片如下。

主窗体

店铺列表表格

我想只在商店列表中的那些显示在datagrid中。

excel vb.net import datagrid filtering
1个回答
0
投票

不太清楚你当前的presentationdisplay是什么样子,问题出在哪里,以及你想要的presentationdisplay应该是什么样子。 但您询问的是只选择导入数据的一部分,这大概是在导入的Excel数据中只有一列中发现的。

datatable 的创建,它有来自Excel工作表的列和行。 列是第一行的数据,行是工作表中后续行的记录。 你可以很容易地访问头数据和行数据。 下面的代码非常粗略,但可以让你看到如何访问工作表中的数据。datatable 你已经在上面所示的有限代码中非常成功地导入了。

Dim columns = datatable.Columns
Dim rows = datatable.Rows
Dim columns1 = columns(0)
Dim rows1 = rows(0)
Dim element1 = rows1(0)

列会有所有的标题,所以你可以找到带有商店代码或商店名称的列。 然后行里会有每个店铺的数据。 所以上图中,rows1是第一行数据,元素1是列1中该行的数据,以此类推。 在 (0) 是进入各个集合的索引。

当然,你必须写代码来提取你想要的数据,必要时还要消除重复的数据,但数据都已经存在了。

希望把数据弄到一个列表中,然后对数据进行排序、过滤和选择,应该是比较简单的,但如果不是,就加个评论。 这算是一个不同的问题。 你问的是只获取店铺代码。

已经补充了。 根据你的补充图片和解释 你想执行SQL INNER JOIN操作 从w3schools.com关于SQL INNER JOIN的页面上看,"INNER JOIN关键字会选择两个表的所有行,只要列之间存在匹配"。这是你必须研究和学习的,但它应该提供你在这种情况下所需要的东西。 你需要定义和构造两个表,然后执行JOIN。

顺便说一下,你也可以按照T.S.第一条评论中提供的链接,如果这能解决你的问题,那就是一个更简单的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.