Я использую взаимодействие Excel на С# в своем проекте веб-сайта для анализа файла Excel и преобразования его в текстовый файл. Пример кода выглядит следующим образом. Он работал хорошо в режиме отладки. Но в диспетчере задач я часто вижу два запущенных Excel, почему? Кроме того, после развертывания веб-сайта в IIS файл excel.exe не закрывается. Мой проект - это проект веб-сайта в VS 2010 (Ultimate). Моя машина — Windows Server 2008, что означает, что у меня должен быть IIS 7. Но когда я запускаю inetmgr, он показывает IIS версии 6 (после поиска в Google я подтвердил, что мой IIS должен быть все еще 7, инструмент управления — 6).
Итак, мой вопрос: почему Excel не закрывается после развертывания в IIS?
Excel.Application excel=new Excel.Application();
Excel.Workbooks wbs=excel.Workbooks;
Excel.Workbook wb=wbs.Open(…);
Try
{
…
Foreach(Excel.Worksheet sheet in wb.Sheets)
{
…
Marshal.RealseComObject(sheet);
}
…
}
Catch()
{
}
Finally
{
wb.Close(false, missing, missing);
while (Marshal.ReleaseComObject(wb)!=0)
{
}
wb=null;
while (Marshal.ReleaseComObject(wbs)!=0)
{
}
wbs=null;
excel.Quit();
while (Marshal.ReleaseComObject(excel)!=0)
{
}
excel=null;
GC.Collect();
GC.WaitForPendingFinalizers();
}
Обновлено: оказалось, что это произошло из-за того, что wbs.Open(…)
выдало исключение.
Я нашел решение по следующей ссылке, и это решило мою проблему. Не удается открыть файл Excel в C#