최근에 저는 사용자가 DataGridView에서 완성 된 데이터를 Excel 테이블로 보낼 수 있도록하는 프로젝트를 진행하고 있으며, 먼저 테이블을 사용자의 PC에 저장해야합니다. 아래에 표시된 코드를 사용하고 있습니다.
Private Sub Bt2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt2.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 Int16, j As Int16
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")
For i = 0 To dg.RowCount - 2
For j = 0 To dg.ColumnCount - 1
xlWorkSheet.Cells(i + 1, j + 1) = dg(j, i).Value.ToString()
Next
Next
xlWorkBook.SaveAs("C:\Users\Abstract\Desktop\file1.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)
xlWorkBook.Close(True, misValue, misValue)
xlApp.Quit()
releaseObject(xlWorkSheet)
releaseObject(xlWorkBook)
releaseObject(xlApp)
MessageBox.Show("Over")
End Sub
Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
MessageBox.Show("Exception Occured while releasing object " + ex.ToString())
Finally
GC.Collect()
End Try
End Sub
사용자는 단추를 클릭하여 자신의 DataGrid를 Excel 테이블로 저장합니다. 그러나 이렇게 한 후 다음 텍스트와 함께 예외가 발생합니다 (첫 번째 행에서 xlApp을 Excel 응용 프로그램으로 설정 함).
COM Exception Ocurred
Exception thrown: 'System.Runtime.InteropServices.COMException' in trimitere_excel.exe
Additional information: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
나는 이것을 극복하기 위해 거의 이틀 동안 찾고 있었다. 내가 무엇을해야하는지에 대한 아이디어가 있다면,이 문제를 해결해 줄 수있는 조언에 대해 정말 감사하겠습니다! 좋은 하루 되세요! :)
아마도 이것이 도움이 될 것입니다.
Imports Excel = Microsoft.Office.Interop.Excel
Imports Microsoft.Office
Imports Microsoft.Office.Interop
Private Sub Bt2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt2.Click
Dim pathExcel As String = "C:\Users\Abstract\Desktop\file1.xls"
Dim xlApp As Excel.Application = New Excel.Application
Dim misValue As Object = System.Reflection.Missing.Value
Dim xlWorkBook As Excel.Workbook
xlWorkBook = xlApp.Workbooks.Add(misValue)
Dim xlWorksheet As Excel.Worksheet = xlWorkBook.Sheets("sheet1")
For i = 0 To dg.RowCount - 2
For j = 0 To dg.ColumnCount - 1
xlWorkSheet.Cells(i + 1, j + 1) = dg(j, i).Value.ToString()
Next
Next
xlWorkBookSum.SaveAs(pathExcel)
xlWorkBookSum.Close()
xlApp.Quit()
releaseObject(xlWorkSheet)
releaseObject(xlWorkBook)
releaseObject(xlApp)
MessageBox.Show("Over")
End Sub
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다