Uno dei miei utenti sta riscontrando un problema durante il tentativo di aprire un file Excel tramite la mia app C#.C# ed Excel interop
Tutto funziona correttamente quando lo eseguo dalla mia macchina e funziona per altri utenti. Non sono un esperto di interoperabilità Excel quindi spero che voi ragazzi potete aiutarmi.
Ecco come è impostato:
ho aggiunto un riferimento alla mia app per Microsoft.Office.Interop.Excel.dll, versione 10.0.4504.0 (che credo sia Excel 2002). Sulla mia macchina ho installato Excel 2007. Nel mio codice provo ad aprire un foglio di lavoro in questo modo:
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);
ho registrato la versione utenti come Excel 9.0 (che è 2000). L'errore che l'utente ottiene è:
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)
Sembra che la cartella di lavoro non possa essere aperta. Il file è stato confermato per esistere ed era libero nel PC dell'utente in C :. Ho pensato di utilizzare il PIA non mi dovrei preoccupare dei problemi di versione di Excel. So che ci sono altri utenti che usano Excel 2000 e funziona sul mio computer di sviluppo.
Qualche idea? Forse le mie chiamate per aprire il file Excel dovrebbero essere cambiate? La cosa sfortunata è che non sono in grado di riprodurlo.
si prega di aiuto con questo se u può http://stackoverflow.com/questions/9962157/safely-disposing-of-an-object-using-c-sharp/ –