Jeden z moich użytkowników ma problem podczas próby otwarcia pliku Excel za pośrednictwem mojej aplikacji C#.Współdziałanie C# i Excela
Wszystko działa poprawnie, gdy uruchomię go z mojego komputera i działa ono dla innych użytkowników. Nie jestem ekspertem od Excela, więc mam nadzieję, że możecie mi pomóc.
Oto jak go skonfigurować:
I dodaje odniesienie do mojego app do Microsoft.Office.Interop.Excel.dll, wersja 10.0.4504.0 (co moim zdaniem jest Excel 2002). Na moim komputerze mam zainstalowany program Excel 2007. W moim kodu próbuję otworzyć arkusz tak:
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);
Zalogowałem wersję użytkowników, jak Excel 9.0 (która jest 2000). Błąd, który otrzymuje użytkownik:
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)
Wygląda na to, że skoroszytu nie można otworzyć. Plik został potwierdzony i był luźny na komputerze użytkownika w C :. Pomyślałem, że używając PIA nie musiałbym się martwić o problemy z wersją Excela. Wiem, że inni użytkownicy korzystają z programu Excel 2000 i działają na moim komputerze programistycznym.
Wszelkie pomysły? Może moje wezwania do otwarcia pliku Excel powinny zostać zmienione? Niefortunną rzeczą jest to, że nie mogę tego odtworzyć.
pomóż prawdziwość tego, jeśli u może http://stackoverflow.com/questions/9962157/safely-disposing-of-an-object-using-c-sharp/ –