【转载】 VB.NET 复制粘贴EXCEL数据到DataGridView

 Function pasteExcel(ByVal DGV As DataGridView)

        Try    ' 当前单元格是否选择的判断

            If DGV.CurrentCell Is Nothing Then

                Return (0)

            End If

 

            If DGV.Rows.Count = 1 Then

                DGV.Rows.Add("", "")

                DGV.CurrentCell = DGV.Item(0, 0)

            End If

 

            Dim insertRowIndex As Integer = DGV.CurrentCell.RowIndex

 

            ' 获取剪切板的内容,并按行分割

            Dim pasteText As String = Clipboard.GetText()

            If String.IsNullOrEmpty(pasteText) Then

                Return (0)

            End If

            pasteText = pasteText.Replace(vbCrLf, vbLf)

            pasteText = pasteText.Replace(vbCr, vbLf)

            pasteText.TrimEnd(New Char() {vbLf})

            Dim lines As String() = pasteText.Split(vbLf)

            Dim cell As String()

 

            ReDim Preserve lines(lines.Length - 2) '防止粘贴后出现空白

 

            For i As Integer = 0 To lines.Length - 1

                cell = lines(i).Split(ControlChars.Tab)

                For o = 0 To cell.Length - 1

                    If DGV.CurrentCell.ColumnIndex + o > DGV.Columns.Count - 1 Then DGV.Columns.Add("", "")

                    If DGV.CurrentCell.RowIndex + i > DGV.Rows.Count - 2 Then DGV.Rows.Add("", "")

                    DGV.Item(DGV.CurrentCell.ColumnIndex + o, DGV.CurrentCell.RowIndex + i).Value = cell(o)

                Next
            Next

 


            If DGV.CurrentCell.ColumnIndex = 0 Then

                Dim rtn& = MsgBox("检测到此次粘贴的目标位置处于表的第一行,是否需要将粘贴内容的第一行放入列标题?", MsgBoxStyle.YesNo, "提示!")

                If rtn = MsgBoxResult.Yes Then

                    For i As Integer = 0 To DGV.Columns.Count - 1

                        For o As Integer = 0 To DGV.Rows.Count - 2

                            DGV.Rows.Item(o).HeaderCell.Value = Str(o + 1)

                            If o = 0 Then DGV.Columns.Item(i).HeaderText = DGV.Item(i, o).Value

                            DGV.Item(i, o).Value = DGV.Item(i, o + 1).Value

                        Next

                    Next

                    DGV.Rows.RemoveAt(DGV.Rows.Count - 2)

                End If

 

            End If

            Return (0)

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try

        Return (0)

    End Function '粘贴excel信息

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的示例代码,演示如何将Excel数据导入到DataGridView。要使用此代码,您需要添加对Microsoft.Office.Interop.Excel库的引用。 ``` '引用 Excel 库 Imports Microsoft.Office.Interop.Excel '在按钮点击事件执行以下代码 Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click '打开 Excel 文件 Dim excelApp As New Excel.Application Dim excelBook As Excel.Workbook = excelApp.Workbooks.Open("C:\path\to\your\file.xlsx") '获取第一个工作表 Dim excelSheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet) '获取单元格范围 Dim range As Excel.Range = excelSheet.UsedRange '将数据加载到 DataTable Dim dataTable As New DataTable For i As Integer = 1 To range.Rows.Count Dim row As DataRow = dataTable.NewRow() For j As Integer = 1 To range.Columns.Count If i = 1 Then '如果是表头,则将列名添加到 DataTable dataTable.Columns.Add(range.Cells(i, j).Value.ToString()) Else '否则将数据添加到 DataTable 的行 row(j - 1) = range.Cells(i, j).Value.ToString() End If Next If i > 1 Then dataTable.Rows.Add(row) End If Next '将 DataTable 数据加载到 DataGridView dgvData.DataSource = dataTable '释放资源 range.Dispose() excelSheet.Dispose() excelBook.Close() excelApp.Quit() GC.Collect() End Sub ``` 请注意,此代码仅演示了如何将Excel数据加载到DataGridView,您需要根据自己的需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值