gpt4 book ai didi

vb.net - 如何使用 vb.net 将无限量的数据文件中的数据导入到 DataGridView 中?

转载 作者:行者123 更新时间:2023-12-03 02:34:01 28 4
gpt4 key购买 nike

我需要将数据导入到 DataGridView 中,但我需要在上次导入后将数据堆叠起来。因此,如果我的第一个文件有 100 条记录,第二个文件有 200 条记录,那么我现在应该有 300 条记录。我需要能够按导入按钮浏览到文件并导入它,并将其添加到数据集的末尾。文件和记录的数量会有很大差异。到目前为止,这是我的代码,但现在每次我导入新数据时,它都会覆盖 DataGridView 中已有的数据。 excel 文件只是一个测试文件,最终会添加一个文件夹浏览器对话框,我将在其中选择“x”个文件数量。

MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Work\4pc_test1.xlsx;Extended Properties=Excel 12.0;")
'MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fd.FileName & "';Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
MyCommand.TableMappings.Add("Table", "Net-informations.com")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)
DataGridView1.DataSource = DtSet.Tables(0)
MyConnection.Close()

最佳答案

如果您希望追加数据,则不应每次都创建新的 DataSetDatatable (事实上您不需要 DataSet > 一张 table 的全部)。创建并使用同一个来保存数据。

表单/类级别变量:

Private dtXLS As DataTable
' once connection string to rule them all
Private AceXLSConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties=Excel 12.0;"

然后是控制循环:

Private Sub btnLoad_Click(etc etc
' create table ONCE
dtXLS = New DataTable
' files to laod:
Dim files As String() = {"C:\Temp\Sample1.xls", "C:\Temp\Sample2.xls"}

For Each fname In files
AppendXLS(fname)
Next
dgv1.DataSource = dtXLS
End Sub

Private Sub AppendXLS(filname As String)
' create conn str for this file
Dim connx = String.Format(AceXLSConnStr, filname)

' always dispose of connections and commands
Using dbCon As New OleDbConnection(connx)
Using cmd As New OleDbCommand("select * from [Sheet1$]", dbCon)
dbCon.Open()
dtXLS.Load(cmd.ExecuteReader())
End Using
End Using
End Sub

在表单级别声明(Private),连接字符串掩码和DataTable 可用于这两种方法。第一个创建 DataTable 实例(仅一次),并在另一个实例中不断添加数据。

此外,特别是如果您要加载“无限”数量的文件,您将需要确保关闭并处置 DBCommand 和连接。 Using block 声明并创建一个供使用的对象,然后在最后为您处理它。

结果(文件 1 包含项目 1-5,文件 2 包含项目 10-15): enter image description here

<小时/>

既然您看起来至少对范围的想法感到困惑,简而言之:

  • 暗淡/私有(private) | friend | public 声明一个变量,仅此而已。
  • New 创建一个实例。 DimNew 并不总是必须同时出现。事实上,当您发现自己正在输入 Dim foo As New... 时,请停下来思考这是否是您真正想要的,因为...
  • 变量的声明位置决定了其范围 - 可以从何处访问该变量。方法中声明的变量只存在于方法中。

还有其他级别的范围,例如 block 级别。请参阅Reference variables and objects elsewhere in a form了解更多详细信息。

关于vb.net - 如何使用 vb.net 将无限量的数据文件中的数据导入到 DataGridView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795313/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com