저는 개인적으로 데이터베이스 관련 작업할 때 ListView 를 많이 애용하는 편입니다. DataGridView 컨트롤에 비해 범용성이 약간 떨어지는 편이지만, 데이터베이스 View 에 관한 컨트롤로서는 아주 딱이죠. 물론 개인적인 사견입니다.
실무에서 작업하는 경우에도 주로 ListView 로 많이 작업하는데요, 이번에는 ListView 에 표시되는 항목들을 그대로 엑셀로 표시한 후 엑셀파일로 저장하는 메서드를 알려드리도록 하겠습니다.
우선, 엑셀 객체 라이브러리를 프로젝트에 추가해야합니다.
우측의 [솔루션 탐색기] 에서 [참조 추가] 를 선택하여 [COM] 탭에서 [Microsoft Excel 16.0 Object Library] 를 선택하면 추가됩니다.
Microsoft Excel 2016 의 경우엔 16.0 이고
Excel 2013 의 경우엔 15.0, Excel 2010 의 경우엔 14.0 입니다.


당연하겠지만, Microsoft Excel 이나 Office 프로그램이 설치되지 않은 PC 환경에서는 사용하실 수 없습니다.
소스 코드는 아주 간단합니다.
이 메서드에 존재하는 파라미터는 데이터를 저장할 리스트 뷰와 엑셀 파일로 저장할 파일 이름입니다.
' 리스트 뷰의 항목들을 엑셀파일로 저장한다. Private Sub SaveExcel(ByVal list As ListView, ByVal ExcelFileName As String) ' 저장할 엑셀 파일 설정. Dim FilePathName As String = ExcelFileName ' 엑셀 객체 속성 값 설정. Excel.Visible = True '엑셀 화면이 스크린에 표시 'Excel.Visible = False '엑셀 화면 비표시 ExcelWorkBook = Excel.Workbooks.Add(True) Excel.Sheets("Sheet1").name = "리스트 뷰 내용 표시" ' 리스트 뷰 항목 표시 Dim RowIndex As Integer = 1 Dim MainItem As ListViewItem For Each MainItem In list.Items RowIndex += 1 ColumnIndex = 0 ' 리스트 뷰 서브 항목 표시 Dim SubItem As ListViewItem.ListViewSubItem For Each SubItem In MainItem.SubItems ColumnIndex += 1 Excel.Cells(RowIndex, ColumnIndex) = SubItem.Text Next ' 저장 시 발생하는 예외 처리 Try With ExcelWorkBook .SaveAs(FilePathName) .Saved = True .Close() End With ExcelWorkBook = Nothing Excel.Quit() Excel = Nothing MessageBox.Show("저장에 성공하였습니다.") Catch ex As Exception MessageBox.Show("저장 중 오류 발생", ex.Message) Finally '시스템 자원 자동으로 회수 GC.Collect() '이 코드가 없으면 작업관리자에 Excel.exe 프로세스가 종료되지 않음 End Try End Sub
이렇게 하면 신기하게(?) 엑셀이 자동으로 실행되면서 자동으로 리스트뷰에 있는 데이터가 순식간에 엑셀에 표시되면서 저장됩니다.
그리고 엑셀에 있는 Cell 에 관한 설정은 MSDN 문서를 참고하시면 됩니다.
전체 프로젝트를 올려드리고 싶지만 프로젝트에 민감한(?) 부분이 있어서 이 소스만 공유해드립니다.
그럼…

[2022.07.03] 개인정보 (연락처) 관련하여 마스킹 처리하였습니다.
좋은 자료 감사합니다.
Access DB를 할 줄 몰라 문의합니다.
용역을 주고자 하니 추천 부탁합니다.
박 원규 / 010-3876-****