2016-04-14 2 views
0

Я пытаюсь экспортировать из DataGridView в Excel, но если я выберу No или Cancel, когда система просит заменить существующий документ, программа выдает следующую ошибку:У меня ошибка при экспорте из 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

Ulises вот простой альтернативный подход, который я надеюсь, что вы найдете интересные:

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.Spreadsheet, также here вы можете найти полный образец.

Смежные вопросы