Một trong những người dùng của tôi gặp sự cố khi cố gắng mở tệp Excel thông qua ứng dụng C# của tôi.C# và Excel interop
Mọi thứ hoạt động tốt khi tôi chạy nó từ máy của mình và nó hoạt động với những người dùng khác. Tôi không phải là chuyên gia interop của Excel nên hy vọng các bạn có thể giúp tôi.
Sau đây là cách nó được thiết lập:
tôi đã thêm một tham chiếu đến ứng dụng của tôi để Microsoft.Office.Interop.Excel.dll, phiên bản 10.0.4504.0 (mà tôi tin là Excel 2002). Trên máy tính của tôi, tôi đã cài đặt Excel 2007. Trong mã của tôi, tôi cố gắng mở một bảng tính như sau:
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);
tôi đăng nhập phiên bản sử dụng như Excel 9.0 (đó là 2000). Lỗi mà người dùng nhận được là:
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ó vẻ như không thể mở sổ làm việc. Tệp đã được xác nhận tồn tại và chỉ bị mất trên PC của người dùng tại C :. Tôi nghĩ rằng bằng cách sử dụng PIA tôi sẽ không phải lo lắng về vấn đề phiên bản Excel. Tôi biết có những người dùng khác sử dụng Excel 2000 và nó hoạt động trên máy phát triển của tôi.
Bất kỳ ý tưởng nào? Có thể các cuộc gọi của tôi để mở tệp Excel phải được thay đổi? Điều đáng tiếc là tôi không thể tái tạo nó.
xin vui lòng giúp wiht này nếu u có thể http://stackoverflow.com/questions/9962157/safely-disposing-of-an-object-using-c-sharp/ –