DataGridView导出数据到Excel

本文介绍了一种使用Visual Basic .NET将DataGridView控件中的数据导出到Excel文件的方法。该方法适用于处理大量数据的情况,能够自动将表格数据及其标题转换为Excel格式,并确保数据的完整性和准确性。
Public Shared Sub ExportToExcel(ByVal dgv As System.Windows.Forms.DataGridView)
        Try
            Dim oApp As New Excel.Application
            Dim oBook As Excel.Workbook = oApp.Workbooks.Add
            Dim oSheet As Excel.Worksheet = CType(oBook.Worksheets(1), Excel.Worksheet)
            oApp.Visible = False
            With oSheet
                'ASC码循环列
                Dim columnNamelastLetter As Integer = Asc("A")
                Dim columnNameFirstLetter As Integer = Asc("A") - 1
                Dim loopcolumn As Integer
                For loopcolumn = 0 To dgv.Columns.Count - 1 Step 1
                    If dgv.Columns(loopcolumn).Visible = True Then
                        If columnNamelastLetter < 91 Then
                            '列在A-Z之间
                            Dim looprow As Integer
                            oSheet.Range(Chr(columnNamelastLetter) & "1").Value = dgv.Columns(loopcolumn).HeaderText
                            For looprow = 0 To dgv.Rows.Count - 1 Step 1
                                If Not dgv.Rows(looprow).Cells(loopcolumn).Value Is Nothing Then
                                    oSheet.Range(Chr(columnNamelastLetter) & CStr(looprow + 2)).Value = "'" + dgv.Rows(looprow).Cells(loopcolumn).Value.ToString
                                End If
                            Next
                        Else
                            '列不在A-Z之间
                            columnNameFirstLetter = Asc("A") - 1 + Int(columnNamelastLetter / 90)
                            Dim tempcolumnlastLetter As Integer = Asc("A") - 1 + (columnNamelastLetter Mod 90)
                            Dim looprow As Integer
                            oSheet.Range(Chr(columnNameFirstLetter) & Chr(tempcolumnlastLetter) & "1").Value = dgv.Columns(loopcolumn).HeaderText
                            For looprow = 0 To dgv.Rows.Count - 1 Step 1
                                If Not dgv.Rows(looprow).Cells(loopcolumn).Value Is Nothing Then
                                    oSheet.Range(Chr(columnNameFirstLetter) & Chr(tempcolumnlastLetter) & CStr(looprow + 2)).Value = "'" + dgv.Rows(looprow).Cells(loopcolumn).Value.ToString
                                End If
                            Next
                        End If
                        columnNamelastLetter = columnNamelastLetter + 1
                    End If
                Next
                oApp.Visible = True
            End With
        Catch ex As Exception
 
            System.Windows.Forms.MessageBox.Show("Source [" & ex.Source & "] Description [" & ex.Message & "]")
        End Try
    End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值