본문 바로가기
VB

[VB.NET] GridView 데이터로 엑셀 파일 생성하기

by 엘딘 2022. 5. 12.
Imports Microsoft.Office.Interop.Excel
Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
    Private Const V As Integer = 2

    'DataGridView 열 제목 작성
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

        DataGridView1.ColumnCount = V
        DataGridView1.Columns(0).Name = "이름"
        DataGridView1.Columns(1).Name = "주소"

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value

        Dim i As Integer
        Dim j As Integer

        SaveFileDialog1.Title = "Save File"
        SaveFileDialog1.initialDirectory = "C:\Work\"		' 생성할 위치
        SaveFileDialog1.FileName = "Test.xlsx"			' 엑셀 이름 지정
        SaveFileDialog1.Filter = "ExcelFile|*.xlsx"		' 엑셀 버전설정(2007 이전버전 *.xls/ 2007 이후버전 *.xlsx)

        If SaveFileDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK Then

            xlApp = New Application
            xlWorkBook = xlApp.Workbooks.Add(misValue)
            xlWorkSheet = xlWorkBook.Sheets("sheet1")

			' 저장 속도 나타내는 바(없애도 됨)
            ProgressBar1.Visible = True
            ProgressBar1.Minimum = 0
            ProgressBar1.Maximum = DataGridView1.RowCount - 1

            For i = 0 To DataGridView1.RowCount - 1
                For j = 0 To DataGridView1.ColumnCount - 1
                    xlWorkSheet.Cells(1, j + 1) = DataGridView1.Columns(j).HeaderText
                    xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value?.ToString()
                    ProgressBar1.Value = i
                Next
            Next

            xlWorkSheet.SaveAs(SaveFileDialog1.FileName)
            xlWorkBook.Close()
            xlApp.Quit()
            releaseObject(xlApp)
            releaseObject(xlWorkBook)
            releaseObject(xlWorkSheet)
            MessageBox.Show("파일은 " & SaveFileDialog1.FileName & "에서 찾을 수 있습니다.")
        Else
            MessageBox.Show("파일 저장을 취소했습니다")
        End If

        ProgressBar1.Visible = False

    End Sub

    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub
End Class

'VB' 카테고리의 다른 글

[VB.NET] ListBox / ComboBox  (0) 2022.05.13
[Vb 6.0] 체크박스 / 라디오버튼  (0) 2022.05.13
[VB.NET] DataGridView  (0) 2022.05.12
[VB.NET] 엑셀 파일 생성  (0) 2022.05.12
[VB.NET] Excel 연결  (0) 2022.05.12

댓글