系统.AccessViolationException:试图读写受保护的内存
本文关键字:受保护 内存 读写 AccessViolationException 系统 | 更新日期: 2023-09-27 18:06:31
我正在尝试打开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();
错误信息如下:
"Unhandled Exception: System. "AccessViolationException: attempt to读写受保护的内存。这通常表明其他内存损坏。在Microsoft.Office.Interop.Excel.Workbooks。打开(字符串文件名,对象更新链接,对象只读,对象格式,对象密码,对象WriteResPasswor d, Object ignoereadonlyrecommended, Object Origin,对象分隔符、对象Edi表、对象通知、对象转换器、对象AddToMru,对象Local,对象Co (rruptLoad) atTestExcel.Program。Main (String [] args)"
不幸的是,这几乎是不可能的。你说:
但是当我在开发服务器上检查它时,它不工作
这在某种程度上暗示这是一个服务。如果是这种情况,那么你就无能为力了,Microsoft Office应用程序不是设计为在服务中运行的。
您的服务器是否也安装了Office 2007 ?在我看来,情况并非如此,这意味着您需要使用与服务器上安装的版本兼容的旧库。