2016-04-14 15 views
0

DataGridViewからExcelにエクスポートしようとしていますが、既存のドキュメントを置き換えるかどうかを尋ねるときにいいえまたは取り消しを選択すると、プログラムは次のエラーをスローします。DgViewからExcelにエクスポートするときにエラーが発生しました

**System.Runtime.InteropServices.COMException was unhandled 
ErrorCode=-2146827284 
HResult=-2146827284 
Message=Exception from HRESULT: 0x800A03EC 
Source=Consulta Serial 
StackTrace: 
at Microsoft.Office.Interop.Excel._Worksheet.SaveAs(String Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local) 
at Consulta_Serial.BuscaPorSerial.Export_Button_Click(Object sender, EventArgs e) in C:\Users\jimenu\Documents\Visual Studio 2015\Projects\BETAS\SIBA\Consulta Serial\BuscaPorSerial.vb:line 128** 

私が使用しているコードは次のとおりです。ここ

Private Sub Export_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Export_Button.Click 
    Dim xlApp As Excel.Application 
    Dim xlWorkBook As Excel.Workbook 
    Dim xlWorkSheet As Excel.Worksheet 
    Dim misValue As Object = Reflection.Missing.Value 
    Dim i As Integer 
    Dim j As Integer 

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


    For i = 0 To GridGeneral.RowCount - 2 
     For j = 0 To GridGeneral.ColumnCount - 1 
      For k As Integer = 1 To GridGeneral.Columns.Count 
       xlWorkSheet.Cells(1, k) = GridGeneral.Columns(k - 1).HeaderText 
       xlWorkSheet.Cells(i + 2, j + 1) = GridGeneral(j, i).Value.ToString() 
      Next 
     Next 
    Next 

    xlWorkSheet.SaveAs("C:\ReportePorSerial.xlsx") 
    xlWorkBook.Close() 
    xlApp.Quit() 

    releaseObject(xlApp) 
    releaseObject(xlWorkBook) 
    releaseObject(xlWorkSheet) 

    MsgBox("El archivo se genero en la siguiente ruta C:\ReportePorSerial.xlsx") 
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 
+0

ありがとうございます、今は大丈夫ですか?私は無駄な行を削除し、エラーと私のコードだけを残しました。 –

答えて

0

ユリシーズは、私はあなたが興味深い見つけることを願っていますシンプルな代替的なアプローチである:

Private Sub Export_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Export_Button.Click 
    Dim ef = New ExcelFile() 
    Dim ws = ef.Worksheets.Add("Sheet1") 

    ' From DataGridView to ExcelFile. 
    DataGridViewConverter.ImportFromDataGridView(ws, Me.GridGeneral, 
     New ImportFromDataGridViewOptions() With {.ColumnHeaders = True}) 

    ef.Save("C:\ReportePorSerial.xlsx") 
End Sub 

コードではGemBox.Spreadsheethereで完全なサンプルを見つけることができます。

関連する問題