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當前行
'@ 備 考:
'@******************************************************************************
????'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
總結
以上是生活随笔為你收集整理的VB.NET 打开Excel文件,读取Excel内容,添加到DataGridView中并显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光刻技术-无掩模高精度激光直写
- 下一篇: 带api的php探针,从零开始搭建前端监