VB.Net Проблема с временным файлом Excel

#excel #vb.net #temporary-files

Вопрос:

У меня есть программа, которая открывает некоторые файлы Excel для проверки значений, а затем закрывает их. Исходные файлы находятся в сети. Все в порядке, я могу считывать значения, но со временем у меня возникли некоторые проблемы с производительностью, на то, чтобы открыть их и прочитать значения, ушло в несколько раз больше 10 секунд. Я вижу, что он создал много временных файлов без каких-либо данных (0Ko). Когда я удаляю все временные файлы, время возвращается меньше чем на секунду.

Вот исходный код :

 Private Shared Sub Verification(listLots As List(Of String) )
Dim AppliExcel As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application()

    For Each numLot As String In listLots
        Dim nomFichier As String = GetCheminFichier(numLot)
        

        If System.IO.File.Exists(nomFichier) Then
            Dim Classeur As Workbook = Nothing
            Dim Feuille As Worksheet
            
            'free all existing workbook
            For Each wb As Workbook In AppliExcel.Workbooks
                wb.Close(SaveChanges:=False)
                ReleaseExcelObject(wb)
            Next

            'Open excel file
            Classeur = AppliExcel.Workbooks.Open(nomFichier,, True)

            ......  
            
            Classeur.Close(False)
            ReleaseExcelObject(Classeur)
            Classeur = Nothing
        end if

    Next

    AppliExcel.Quit()
    ReleaseExcelObject(AppliExcel)
End Sub
 
 Private Shared Sub ReleaseExcelObject(obj As Object)
    Try
        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
        obj = Nothing
    Catch ex As Exception
        obj = Nothing
    Finally
        GC.Collect()
    End Try
End Sub
 

Мне интересно, в чем проблема и как ее решить.

Надеюсь, у кого-нибудь есть идея. С уважением, NC.

Ответ №1:

Это ошибка, а не функция, поэтому нет единственно правильного решения.

Отключите все антивирусные программы. Если это работает, исключите папку из AV, исключите тип файла из AV.

если это не сработает:

Измените расположение временных файлов excel.

Попробуйте использовать другую версию Windows как для Клиента, так и для Сервера.

Отключите автоматическое сохранение и автоматическое восстановление.

Отключить Удаленное Дифференциальное Сжатие

Есть куча других вещей, которые могут вызвать подобные проблемы — настройки синхронизации, настройки конфиденциальности (отчетности), настройки обновления проводника Windows, настройки обновления миниатюр … начните с AV и посмотрите, что вы получите.

Комментарии:

1. Спасибо тебе за твой ответ, Дэвид. Вы не знаете, идентифицирован ли он корпорацией Майкрософт ?

2. «Это» невозможно идентифицировать, потому что » Это » всегда что-то другое. Или, в качестве альтернативы, он был идентифицирован много раз-по крайней мере, один раз для каждой из возможностей, о которых я упоминал. По мере того, как вы пробуете каждую возможность, вы можете изменить свой вопрос, чтобы исключить это и включить информацию о вашей среде.