Блокировка записи электронной таблицы VB

на данный момент у меня есть небольшое приложение, и мне нужно получить информацию от объекта и отобразить ее в файле excel, используя класс Microsoft.office.interop, который я смог записать в файл, и он показывает один за другим записи добавляются, однако примерно раз в 3 раза я пытаюсь это сделать, электронная таблица перестает заполняться где-то между 300-й и 600-й записью, у меня всего 6000 и она не ломается каждый раз, я ставлю галочку после того, как она заканчивается, чтобы увидеть, была ли последняя запись заполнена, но код никогда не достигает этой точки, и я не уверен, что происходит

Я также не знаю, как отладить проблему, так как это означало бы пройти 6000 циклов, чтобы проверить ее остановку ... что может даже не произойти?

небольшой фрагмент кода здесь

loadExcel(incidents, WorkSheetName)
            If WorkSheetName.Cells(DBObject.HighestInci + 1, 6) Is Nothing Then

                MessageBox.Show("Failed to fill spreadsheet, Retrying now.")
                loadExcel(incidents, WorkSheetName)

            End If

выше приведен код, вызывающий и проверяющий метод ниже

Private Sub loadExcel(ByVal incidents As List(Of Incident), ByRef WorkSheetName As Excel.Worksheet)

        Dim i = 2
        For Each inc As Incident In incidents

            WorkSheetName.Cells(i, 1) = inc.DateLogged
            WorkSheetName.Cells(i, 2) = inc.DateClosed
            WorkSheetName.Cells(i, 3) = Convert.ToString(inc.DateLogged).Substring(3, 2)
            i += 1
        Next

    End Sub

заранее спасибо

ИЗМЕНИТЬ

Я думаю, что лучше загрузить его в какой-то буфер, а затем записать после того, как все они будут обновлены, вместо того, чтобы в настоящее время загружать и записывать каждый отдельно? однако я понятия не имею, с чего начать для этого?


person Alex    schedule 13.06.2012    source источник
comment
Вы проверили вводимые данные? Что-то неправильное в inc var может быть потенциальным источником проблемы. Добавьте System.Diagnostics.Debug.Writeline(....) внутри цикла инцидентов.   -  person Steve    schedule 13.06.2012


Ответы (1)


Я исправил свою проблему, с тем, что у меня было выше, Excel был открыт, и он начал печатать в электронной таблице построчно, проблема в том, что любое взаимодействие с Excel может привести к зависанию процесса.

Добавив

ExcelApp.visible = false 

перед проведением процесса и

ExcelApp.visible = true 

после этого все работает, а потом открывает файл

person Alex    schedule 13.06.2012