VB电子表格写锁

时间:2012-06-13 09:05:19

标签: vb.net interop spreadsheet

目前我有一个小应用程序,需要从一个对象获取信息并将其显示到一个excel文件中,使用我已经能够写入该文件的Microsoft.office.interop类,它显示了一个一个记录被添加,但是我每次尝试3次,电子表格停止填充在第300和第600个记录之间的某个地方,我总共有6,000个并且每次都没有破坏,我在完成后看了一下检查是否填写了最后一条记录,但代码从未达到过这一点,我不确定发生了什么

我也不知道如何调试问题,因为它意味着通过6,000个循环来检查它是否停止......这可能甚至不会发生?

代码的一小部分在这里

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

提前致谢

编辑

我正在考虑将它加载到某种类型的缓冲区然后写入一旦它们全部更新将是要去的方式而不是它当前加载和单独写入?但是我不知道从哪里开始呢?

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题,我已经打开了Excel上面的内容,并且它开始逐行打印到电子表格中,问题是任何与excel的交互都会导致进程冻结

添加

ExcelApp.visible = false 

在执行流程之前和

ExcelApp.visible = true 

之后,一切正常,然后打开文件