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


좋은 웹페이지 즐겨찾기