目前我有一个小应用程序,需要从一个对象获取信息并将其显示到一个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 回答
我已经解决了我的问题,我已经打开了Excel上面的内容,它开始逐行打印到电子表格中,问题是任何与excel的交互都会导致进程冻结
通过添加一个
在执行过程之前和
之后,一切正常,然后打开文件