VB.NET 打开Excel文件,读取Excel内容,添加到DataGridView中并显示

'Excel添加:工程->参照追加→COM→Microsoft Excel *.* ObjectLibrary
    'DataGridView 枚举型定义
   
 Private Enum DGV_ENUM
        COL_ROW
        COL_NAME
        COL_AGE
    End Enum

    'Excel 列枚举型定义
   
 Private Enum XLS_COL_ENUM
        COL_ROW
        COL_NAME
        COL_AGE
    End Enum
Private
 Sub BTN_LOAD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesBTN_LOAD.Click
        Dim xlAppExcelFile As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim intColNum As Integer
        Dim intRowNum As Integer
        Dim blnAddRow As Boolean
        '生成新的instance
        xlAppExcelFile = New Excel.Application
        '在已有的Excel,指定文件路径,打开Book
        xlBook = xlAppExcelFile.Workbooks.Open("文件路径")
        '不表示Excel
        xlAppExcelFile.Visible = False
        '禁止显示对话框和警告消息
        xlAppExcelFile.DisplayAlerts = False
        '取消任务栏中的窗口选项
        xlAppExcelFile.ShowWindowsInTaskbar = False
        xlSheet = xlBook.Sheets(1)
        intRowNum = xlSheet.UsedRange.Rows.Count
        intColNum = xlSheet.UsedRange.Columns.Count 

        For intXlsI As Integer = 1 To intRowNum
            'Excel中名字空的话、… … 很出。
            If Trim$(xlSheet.Cells(intXlsI, XLS_COL_ENUM.COL_NAME).Value).Equals(String.Empty)Then
                … … 

                Exit For'退出整个循环(intXlsI)。
                'Continue For 退出当前循环。
            End If
            '将Excel读取放到DataGridView
            ''RemoveHandler DGV.Invalidated, AddressOf DGV_Invalidated
            Me.DGV.AllowUserToAddRows = False
            Me.DGV.AllowUserToDeleteRows = False
            Dim intRowCnt As Integer = Me.DGV_EDIT.Rows.Add()
            DGV.Value(DGV_ENUM.COL_ROW, intRowCnt) = Trim$(xlSheet.Cells(intXlsI, XLS_COL_ENUM.COL_ROW).Value)
           
 '如果DataGridView中有Combo Box控件,不能将Combo Box的Code值直接赋值,是整个值。
            '例: A:小王 B:小张 不能将Code A或B,赋到Grid中的Combo Box。用[A:小王]-> OK
            CMB_HIDE_NAME_LIST.SetSelectCondition("Combo Box的Code值")
            DGV.Value(DGV_ENUM.COL_NAME, intRowCnt) = CMB_HIDE_NAME_LIST.SelectedItem
            DGV.Value(DGV_ENUM.COL_AGE, intRowCnt) = Trim$(xlSheet.Cells(intXlsI, XLS_COL_ENUM.COL_AGE).Value)
            Me.DGV.AllowUserToAddRows = True
            Me.DGV.AllowUserToDeleteRows = True
            ''AddHandler DGV.Invalidated, AddressOf DGV_Invalidated
        Next intXlsI

        'Excel 终了(关闭会有一定的延时)
        xlSheet = Nothing
        xlbook.Close()
        xlBook = Nothing
        xlAppExcelFile.Quit()
        xlAppExcelFile = Nothing
        'System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
        'System.Runtime.InteropServices.Marshal.ReleaseComObject(xlAppExcelFile)
End Sub

'@******************************************************************************
'@ 名  称: DGV_EDIT_KeyDown
'@ 内  容: 用DEL键,删除GridView当前行
'@ 备  考:
'@******************************************************************************

Private Sub DGV_EDIT_KeyDown(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.KeyEventArgs) Handles DGV_EDIT.KeyDown
    'Me.DGV_EDIT.AllowUserToAddRows = True(自动添加行)
    If   DGV_EDIT.CurrentRow.Index <> DGV_EDIT.Rows.Count - 1 Then
        If e.KeyCode = Keys.Delete Then
            DGV_EDIT.Rows.RemoveAt(DGV_EDIT.CurrentRow.Index)
            DGV_EDIT.Refresh()
        End If
    End If
End Sub

  • 0
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
可以通过以下步骤将Excel导入VB.NETDataGridView控件: 1. 引用Microsoft.Office.Interop.Excel命名空间,以便使用Excel对象模型。 2. 创建Excel应用程序对象和工作簿对象,并打开导入Excel文件。 3. 获取工作簿的工作对象,并选择要导入的工作。 4. 读取Excel数据,并将其存储在二维数组。 5. 将数组数据绑定到DataGridView控件。 以下是示例代码: ``` '引用命名空间 Imports Microsoft.Office.Interop.Excel Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click '创建Excel应用程序对象 Dim excelApp As New Application '打开Excel文件 Dim excelWorkbook As Workbook = excelApp.Workbooks.Open("C:\temp\test.xlsx") '获取工作对象 Dim excelWorksheet As Worksheet = excelWorkbook.Sheets("Sheet1") '选择工作 excelWorksheet.Select() '获取行数和列数 Dim numRows As Integer = excelWorksheet.UsedRange.Rows.Count Dim numCols As Integer = excelWorksheet.UsedRange.Columns.Count '定义二维数组 Dim data(numRows - 1, numCols - 1) As Object '读取数据 For i As Integer = 1 To numRows For j As Integer = 1 To numCols data(i - 1, j - 1) = excelWorksheet.Cells(i, j).Value Next Next '绑定数据DataGridView控件 DataGridView1.DataSource = data '释放Excel对象 excelWorkbook.Close() excelApp.Quit() End Sub ``` 需要注意的是,以上代码使用的Excel版本为2010及以上。如果使用的是更早的版本,可能需要修改一些代码。另外,在使用完Excel对象后,需要调用Close()方法和Quit()方法来释放资源,以避免内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值