【问题标题】:VB.NET Excel file not connecting with virtual datagridviewVB.NET Excel 文件未与虚拟 datagridview 连接
【发布时间】:2016-01-07 14:54:10
【问题描述】:

我正在尝试在我的 VB.NET 应用程序中编写一个模块,但它不能正常工作。 我正在尝试创建一个 datagridview,并将一个 excel 文件加载到其中。但是,Excel 没有加载到其中。

代码如下

Imports Microsoft.Office
Imports Microsoft.Office.Interop
Imports System.Data.OleDb
Imports System.Net.Mail

Module m_IslsHpPtSplit
Dim UploadFilePath As String
Dim UploadFileName As String

Dim dgv1 As DataGridView
Dim dgv2 As DataGridView

Public Sub LoadFile()
    dgv1 = New DataGridView
    dgv2 = New DataGridView
    Try
        Dim filedialog As OpenFileDialog = New OpenFileDialog()
        Dim path As String
        filedialog.Title = "Select file"
        filedialog.InitialDirectory = "Desktop"
        filedialog.RestoreDirectory = True
        If filedialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
            path = filedialog.FileName
        Else
            path = Nothing
        End If
        UploadFilePath = filedialog.FileName
        UploadFileName = System.IO.Path.GetFileName(filedialog.FileName)
        Dim dtSheet1 As New DataTable

        If Not path = Nothing Then
            Using cn As New System.Data.OleDb.OleDbConnection
                Dim Builder As New OleDbConnectionStringBuilder With _
                    { _
                        .DataSource = path, _
                        .Provider = "Microsoft.ACE.OLEDB.12.0" _
                    }
                Builder.Add("Extended Properties", "Excel 12.0; IMEX=1;HDR=Yes;")
                cn.ConnectionString = Builder.ConnectionString

                cn.Open()

                Using cmd As OleDbCommand = New OleDbCommand With {.Connection = cn}
                    cmd.CommandText = "SELECT * FROM [FNAC$]"
                    Dim dr As System.Data.IDataReader = cmd.ExecuteReader

                    dtSheet1.Load(dr)
                    dgv1.DataSource = dtSheet1
                End Using
            End Using
            MessageBox.Show(dgv1.RowCount)
            MessageBox.Show("Done")
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    SplitFile()
End Sub 'LoadFile

在那之后,我需要执行一些计算等,但是行

MessageBox.Show(dgv1.RowCount)

实际上返回0。excel文件有316行。 我怎样才能让数据粘在新的 dgv 上?

【问题讨论】:

    标签: vb.net excel datagridview


    【解决方案1】:

    我认为问题源于实际上并未将 dgv1 添加到任何控件集合(数据源已附加,但实际上没有创建任何行来显示)。如果你是MessageBox.Show(dtSheet1.Rows.Count),你可能会注意到一个计数证明数据正在被读入。我在你的Messagebox.Show(dgv1.RowCount)之前添加了Form1.Controls.Add(dgv1),并产生了正确的计数。

    【讨论】:

      猜你喜欢
      • 2010-10-05
      • 2018-02-19
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多