系统.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)"

系统.AccessViolationException:试图读写受保护的内存

不幸的是,这几乎是不可能的。你说:

但是当我在开发服务器上检查它时,它不工作

这在某种程度上暗示这是一个服务。如果是这种情况,那么你就无能为力了,Microsoft Office应用程序不是设计为在服务中运行的。

您的服务器是否也安装了Office 2007 ?在我看来,情况并非如此,这意味着您需要使用与服务器上安装的版本兼容的旧库。

相关文章: