【问题标题】:how to import excel to datagrid, then filter by db values如何将excel导入datagrid,然后按db值过滤
【发布时间】:2020-08-05 15:00:17
【问题描述】:

我关于将 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

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

图片如下;

Main Form

Store List Form

我只想在数据网格中显示商店列表中的那些.. :\

【问题讨论】:

  • 使用数据视图作为数据源,而不是数据表asp-net-example.blogspot.com/2011/05/…
  • 我投票结束这个问题,因为之前已经回答了这个问题,此外我还提供了一个示例链接。有很多这样的例子可用。底线,OP 在询问之前没有做足够的研究

标签: excel vb.net import datagrid filtering


【解决方案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)

列将包含所有标题,因此您可以找到包含商店代码或商店名称的列。然后这些行将包含每个商店的数据。所以上面,rows1 是第一行数据,element1 是该行中来自 columns1 的数据,依此类推。 (0) 是各个集合的索引。

当然,您必须编写代码来提取您想要的数据,并在必要时消除重复数据,但数据已经全部存在。

希望将数据放入列表,然后对数据进行排序、过滤和选择应该相对简单,但如果不是,请添加注释。那是一个不同的问题。您询问了仅获取商店代码的问题。

已添加:根据您的附加图片和说明,您希望执行 SQL INNER JOIN 操作。从 SQL INNER JOIN 的 w3schools.com 页面上,“只要列之间存在匹配,INNER JOIN 关键字就会从两个表中选择所有行。”这是你必须学习和学习的东西,但它应该提供你在这种情况下需要的东西。您将需要定义和构造两个表,然后执行 JOIN。

顺便说一句,您还可以点击 T.S. 在第一条评论中提供的链接,如果这解决了您的问题,那么它是一个更简单的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 2020-04-03
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2017-08-29
    相关资源
    最近更新 更多