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

我正在尝试打开和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(); 

错误消息如下:

“未处理的exception:System.AccessViolationException:试图读取或写入受保护的内存。这通常表示其他内存已损坏。在Microsoft.Office.Interop.Excel.Workbooks.Open(string文件名,对象更新链接,对象只读,在TestExcel.Program.Main(String [] args)上的Object Format,Object Password,Object WriteResPasswor d,Object IgnoreReadOnlyRecommended,Object Origin,Object Delimiter,Object Edi table,Object Notify,Object Converter,Object AddToMru,Object Local,Object Co rruptLoad )”

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

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

这意味着这是一种服务。 如果是这样的话,那么可以做的事情就不多了, Microsoft Office应用程序并不是devise用于运行服务的 。

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