2012-01-10 2 views
0

Приложение Windows Forms собирает данные из пользовательского ввода и математического расчета и выводит набор результатов в электронную таблицу Excel.COMException при записи в Excel 2007 из Windows Forms

Вот мой код (для удобства, я включил только код, который, кажется, отношение к проблеме):

 Dim exc As New Excel.Application 
     Dim book As Excel.Workbook 
     Dim sheet As Excel.Worksheet 

     book = exc.Workbooks.Add 
     sheet = book.Sheets.Add 

     Dim dc As System.Data.DataColumn 
     Dim dr As System.Data.DataRow 
     Dim colIndex As Integer = 0 
     Dim rowIndex As Integer = 1 

     exc.Cells(0, 0) = "Clearspan Cladding Sheet" 
     exc.Cells(0, 1) = dtpDate.Value 
     exc.Cells(0, 2) = "Job No. " & txtJob.Text 
     exc.Cells(0, 3) = "By " & txtName.Text 

     For Each dc In dtTotals.Columns 
      colIndex = colIndex + 1 
      exc.Cells(1, colIndex) = dc.ColumnName 
     Next 

Ошибка возникает при попытке к Cell(0, 0). Ниже приведена самая подробная информация, которую я могу получить при ошибке. Цикл For...Next работает (как проверено в предыдущих сеансах отладки). Насколько я вижу, я делаю то же самое над ним.

System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC 
    at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) 
    at Microsoft.Office.Interop.Excel.Range.set__Default(Object RowIndex, Object ColumnIndex, Object Param) 
    at Cladding.frmCladdingMain.Button1_Click(Object sender, EventArgs e) in C:\Users\logan.HO\Documents\Visual Studio 2010\Projects\Clearspan\Cladding\frmCladdingMain.vb:line 240 

Как всегда, заблаговременно за помощь.

+2

AFAIK коллекция ячеек - 1; (1,1) является A1 –

+0

@Logan - попробуйте sheet.Cells() Ссылка - http://msdn.microsoft.com/en-us/library/ff194567.aspx – adatapost

ответ

0

Проверьте эту ссылку: http://support.microsoft.com/kb/301982 Первая строка & Значение col равно 1,1 (то есть A1 = ячейка (1,1)).

+0

да .. это должно быть exc.Cells (1 , 1) = «Листок для обклеивания лепестков» exc.Cells (1, 2) = dtpDate.Value exc.Cells (1, 3) = «Номер задания» & txtJob.Text exc.Cells (1, 4) = "By" & txtName.Text – Harsh

+0

Использование коллекции как 1-на основе избавило от этой ошибки, но информация, которая идет там, не записывается в электронную таблицу – Ortund

+0

use exc.Cells (1, colIndex) .value = dc.ColumnName. & увеличьте индекс столбца после этого утверждения. – Harsh

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