Home Articles

VB电子表格写锁

Asked
Viewed 783 times
0

目前我有一个小应用程序,需要从一个对象获取信息并将其显示到一个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 Answer

  • 0

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

    通过添加一个

    ExcelApp.visible = false
    

    在执行过程之前和

    ExcelApp.visible = true
    

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

Related