System.AccessViolationException: попытка чтения или записи в защищенную память - PullRequest
1 голос
/ 22 августа 2011

Я пытаюсь открыть файл Excel 2000.Когда я пытаюсь сделать это с Excel 2007, он работает нормально, но когда я проверил это на сервере разработки, он не работает.Это ошибка при открытии файла Excel.Я использую приведенный ниже код.

 // file
 string sFile = @"c:\testfile.xls";

 // create excel file
 Excel.Application oExcel;
 Excel.Workbook oBook;
 Excel.Worksheet oSheet;
 DataTable dt = new DataTable();
 DataRow dr = dt.NewRow();


oExcel = new Excel.ApplicationClass();
oBook = oExcel.Workbooks.Add(Type.Missing);
oBook = oExcel.Workbooks.Open(sFile, 0, false, 5, "", "", true, 
    Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 
    0, true, true, false);
oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(2);
oSheet.Cells[2, 1] = "Successfully Created";
oSheet.Cells[2, 2] = "Sample excel updated";
oExcel.DisplayAlerts = false;

// save & close
oBook.Close(true, sFile,false);
oExcel.Quit();
Marshal.ReleaseComObject(oExcel);
oExcel = null;
GC.Collect();

Сообщение об ошибке следующее:

"Необработанное исключение: System.AccessViolationException: Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая памятьповреждено в Microsoft.Office.Interop.Excel.Workbooks.Open (имя файла строки, объект UpLink, объект ReadOnly, формат объекта, пароль объекта, объект WriteResPasswor d, объект IgnoreReadOnlyRecommended, источник объекта, разделитель объекта, таблица Edi объекта, объект Notify, Конвертер объектов, Объект AddToMru, Локальный объект, Объект Co rruptLoad) в TestExcel.Program.Main (String [] args) "* ​​1007 *

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

К сожалению, почти невозможно сказать.Вы говорите:

, но когда я проверил его на сервере разработки, он не работает

Это в некоторой степени подразумевает, что это сервис.Если это так, то вы мало что можете сделать, Приложения Microsoft Office не предназначены для работы в службах .

0 голосов
/ 10 января 2012

На вашем сервере также установлен Office 2007?Мне кажется, что это не так, что означает, что вам нужно использовать более старые библиотеки, совместимые с версией, установленной на вашем сервере.

...