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

提前致谢

编辑

我正在考虑将它加载到某种缓冲区,然后在它们全部更新后写入将是要走的路,而不是当前单独加载和写入每个?但是我不知道从哪里开始?

4

1 回答 1

0

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

通过添加一个

ExcelApp.visible = false 

在执行该过程和一个

ExcelApp.visible = true 

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

于 2012-06-13T10:07:48.690 回答