Un de mes utilisateurs rencontre un problème en essayant d'ouvrir un fichier Excel via mon application C#.C# et Excel interop
Tout fonctionne bien quand je l'exécute à partir de ma machine et cela fonctionne pour les autres utilisateurs. Je ne suis pas un expert en interopérabilité Excel et j'espère que vous pourrez m'aider.
Voici comment il est mis en place:
J'ai ajouté une référence à mon application à Microsoft.Office.Interop.Excel.dll, la version 10.0.4504.0 (que je crois Excel 2002). Sur ma machine, je l'ai installé Excel 2007. Dans mon code, je tente d'ouvrir une feuille de calcul comme ceci:
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);
Je la version connecté aux utilisateurs Excel 9.0 (qui est 2000). L'erreur que l'utilisateur obtient est:
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)
Il semble que le classeur ne puisse pas être ouvert. Le fichier a été confirmé pour exister et était juste lâche sur le PC de l'utilisateur à C :. Je pensais qu'en utilisant le PIA, je n'aurais pas à m'inquiéter des problèmes de version d'Excel. Je sais que d'autres utilisateurs utilisent Excel 2000, et cela fonctionne sur ma machine de développement.
Des idées? Peut-être que mes appels pour ouvrir le fichier Excel devraient être changés? La chose malheureuse est que je suis incapable de le reproduire.
s'il vous plaît aide avec ce si vous pouvez http://stackoverflow.com/questions/9962157/safely-disposing-of-an-object-using-c-sharp/ –