System.AccessViolationException:尝试读取或写入受保护的内存

时间:2011-08-22 11:31:28

标签: c# .net excel memory protected

我正在尝试打开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(String Filename,Object   Upda teLinks,Object ReadOnly,Object Format,Object Password,Object   WriteResPasswor d,Object IgnoreReadOnlyRecommended,Object Origin,   对象分隔符,对象Edi表,对象通知,对象转换器,   Object AddToMru,Object Local,Object Co rruptLoad)at   TestExcel.Program.Main(String [] args)“

2 个答案:

答案 0 :(得分:2)

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

  

但是当我在开发服务器上检查它时它无法正常工作

这有点暗示这是一项服务。如果是这种情况,那么你无能为力Microsoft Office applications are not designed to run in services

答案 1 :(得分:0)

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