VB.net中DataGrid導出爲Excel文件函數

Public Function ExportXLsD(ByVal datagrid As DataGrid) ', ByVal Title As String)
        'Dim Mytable As New DataTable
        'Mytable = CType(datagrid.DataSource, DataTable)
        If mytable Is Nothing Then
            MessageBox.Show("沒有記錄不能導出數據", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Exit Function
        End If
        If mytable.Rows.Count > 0 Then
            Dim MyFileName As String
            Dim FileName As String
            With SaveFileDialog1
                .AddExtension = True '如果用戶忘記添加擴展名,將自動家上
                .DefaultExt = "xls" '默認擴展名
                .Filter = "Excel文件(*.xls)|*.xls"
                .Title = "文件保存到"
                If .ShowDialog = DialogResult.OK Then
                    FileName = .FileName
                End If
            End With
            MyFileName = Microsoft.VisualBasic.Right(FileName, 4)
            If MyFileName = "" Then
                Exit Function
            End If
            If MyFileName = ".xls" Or MyFileName = ".XLS" Then
                Dim FS As FileStream = New FileStream(FileName, FileMode.Create)
                Dim sw As StreamWriter = New StreamWriter(FS, System.Text.Encoding.Default)
                sw.WriteLine(vbTab & FileName & vbTab & Date.Now)
                Dim i, j As Integer
                Dim str As String = ""
                For i = 0 To mytable.Columns.Count - 1
                    str = mytable.Columns(i).Caption
                    sw.Write(str & vbTab)
                Next
                sw.Write(vbCrLf)
                For j = 0 To mytable.Rows.Count - 1
                    For i = 0 To mytable.Columns.Count - 1
                        Dim strColName, strRow As String
                        strRow = IIf(mytable.Rows(j).Item(i) Is DBNull.Value, "", mytable.Rows(j).Item(i))
                        sw.Write(strRow & vbTab)
                    Next
                    sw.Write(vbLf)
                Next
                sw.Close()
                FS.Close()
                MessageBox.Show("數據導出成功!", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                Exit Function
            End If
        Else
            MessageBox.Show("沒有記錄不能導出數據", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Function
 
 
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
        Dim saveExcel As SaveFileDialog
        saveExcel = New SaveFileDialog
        saveExcel.Filter = "Excel文件(.xls)|*.xls"
        Dim filename As String
        If saveExcel.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
        filename = saveExcel.FileName

        Dim excel As Excel.Application
        excel = New Excel.Application

        excel.DisplayAlerts = False
        excel.Workbooks.Add(True)
        excel.Visible = False
        Dim i As Integer
        For i = 0 To DataGridView1.Columns.Count - 1
            excel.Cells(1, i + 1) = DataGridView1.Columns(i).HeaderText
        Next
        '設置標題
        Dim j As Integer
        For i = 0 To DataGridView1.Rows.Count - 1 '填充數據
            For j = 0 To DataGridView1.Columns.Count - 1
                excel.Cells(i + 2, j + 1) = DataGridView1(j, i).Value
            Next
        Next
        excel.Workbooks(1).SaveCopyAs(filename) '保存
        Me.Close()
    End Sub


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章