0

現時点では、小さなアプリケーションがあり、オブジェクトから情報を取得して、ファイルに書き込むことができた Microsoft.office.interop クラスを使用して Excel ファイルに表示する必要があります。レコードが追加されていますが、3 回に 1 回試してみると、スプレッドシートは 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 に答える