2014-10-10 3 views
0

У меня есть этот код, который позволяет мне экспортировать данные, содержащиеся в двух TextBoxs в таблицу Excel, проблема в том, что файл excel не создается. Я помещаю эти два утверждения, которые не работают для спасения комментариев ниже, может быть, кто-то может его проверить и сказать, почему это неправильно.from data textbox to excel vb.net

Dim objExcel As New Excel.Application  ' Represents an instance of Excel 
Dim objWorkbook As Excel.Workbook  'Represents a workbook object 
Dim objWorksheet As Excel.Worksheet  'Represents a worksheet object 

objWorkbook = objExcel.Workbooks.Add 
objWorksheet = CType(objWorkbook.Worksheets.Item(1), Excel.Worksheet) 

'This form contains two text boxes, write values to cells A1 and A2 
objWorksheet.Cells(1, 1) = TextBox1.Text 
objWorksheet.Cells(2, 1) = TextBox2.Text 

objWorkbook.Close(False) 

'objWorkbook.Save() 
'or 
'objWorkbook.SaveAs("C:\Temp\Book1.xls") 

objExcel.Quit() 
+0

Как/где конкретно делает код не получится? Есть ли ошибка во время выполнения? Что это за ошибка? Предположительно, если 'SaveAs()' не выдает ошибку, файл действительно должен быть успешно сохранен. Вы уверены, что это не так? Вы * раскомментировали * строки «сохранить», когда вы действительно запускали код? – David

+0

бы вы сделали это раньше для отладки кода, однако: бы вы сделали это раньше для отладки кода, однако, эта строка кода: objWorkbook.SaveAs («C: \ Temp \ BOOK1.XLS») Я получаю эту ошибку после нажатия кнопки, которая вызывает код, написанный выше: Объект, вызванный, отключен от своих клиентов. (Исключение из HRESULT: 0x80010108 (RPC_E_DISCONNECTED)) – pollonz

+0

Вы имеете в виду код, бросающий исключение? Каково точное исключение? Что такое трассировка стека? Не разрешайте приложению сбой и не догадывайтесь об этом, поймайте исключение и изучите его. – David

ответ

0

Кодекс испытанный

Ваш вопрос может быть от нескольких различных вещей, которые я могу видеть. Я представил несколько вопросов, которые я мог видеть из вашего кода, который вы опубликовали.

  1. Ваше призвание. Закройте перед сохранением книги.
  2. Вы не указали «FileFormat» в функции сохранения.
  3. Ваш отказ от экземпляра Excel.
  4. Это важен выпустить ВСЕХ объектов Excel, которые вы используете. Если нет, то он задерживается в памяти и не будет выпущен.

Код Ниже

Dim xlApp As New excel.Application 
    Dim xlWorkBook As excel.Workbook 
    Dim xlWorkSheet As excel.Worksheet 
    Try 
     xlApp.DisplayAlerts = False 
     xlWorkBook = xlApp.Workbooks.Add 
     xlWorkSheet = DirectCast(xlWorkBook.Sheets("Sheet1"), excel.Worksheet) 

     xlApp.Visible = False 'Don't show Excel; we can and we don't have too 

     xlWorkSheet.Cells(1, 1) = TextBox1.Text 
     xlWorkSheet.Cells(2, 1) = TextBox2.Text 

     xlWorkBook.SaveAs("C:\Temp\Book1.xls", FileFormat:=56) 'Save the workbook 
     xlWorkBook.Close() 'Close workbook 
     xlApp.Quit() 'Quit the application 

     'Release all of our excel objects we used... 
     ReleaseObject(xlWorkSheet) 
     ReleaseObject(xlWorkBook) 
     ReleaseObject(xlApp) 

    Catch ex As Exception 
    End Try 

Способ Освободить Excel Objects

Public Shared Sub ReleaseObject(ByVal obj As Object) 
    Try 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) 
    Catch ex As Exception 
     obj = Nothing 
    Finally 
     GC.Collect() 
    End Try 
End Sub