Один из моих пользователей сталкивается с проблемой при попытке открыть файл Excel через мое приложение С#.
Все работает нормально, когда я запускаю его с моей машины и работает для других пользователей. Я не эксперт в Excel, поэтому, надеюсь, вы, ребята, можете мне помочь.
Вот как он настроен:
Я добавил ссылку на мое приложение в Microsoft.Office.Interop.Excel.dll, версия 10.0.4504.0 (который, я считаю, Excel 2002). На моей машине я установил Excel 2007. В моем коде я пытаюсь открыть рабочий лист следующим образом:
using Microsoft.Office.Interop
...
Microsoft.Office.Interop.Excel.ApplicationClass _excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbook excelWorkbook = _excelApp.Workbooks.Open(workbookPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", false, false, 0, true, false, false);
Microsoft.Office.Interop.Excel.Sheets excelSheets = excelWorkbook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item(1);
Я зарегистрировал версию для пользователей как Excel 9.0 (2000). Ошибка, которую пользователь получает:
Exception='System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
Похоже, что книга не может быть открыта. Файл был подтвержден и существует только на ПК пользователя на C:. Я подумал, что с помощью PIA мне не придется беспокоиться о проблемах с версией Excel. Я знаю, что есть другие пользователи, использующие Excel 2000, и он работает на моей машине разработки.
Любые идеи? Может быть, мои вызовы для открытия файла Excel должны быть изменены? К сожалению, я не могу воспроизвести его.