Excel工作簿导入错误

我正在做一个危险的应用程序的一些练习,我很难理解为什么我得到这个错误。 我已经缩小到我认为这个问题是,但现在,这是我的代码…

if (questionPath != "") { Excel.Application myapp = new Excel.Application(); Excel.Workbook wb = myapp.Workbooks.Open(questionPath); Excel.Worksheet sheet = (Excel.Worksheet)wb.Worksheets.get_Item(1); var cell = (Excel.Range)sheet.Cells[1, 1]; MessageBox.Show(cell.Value); } 

基本上,build立一个新的Excel,拉入工作簿,得到第一张表,然后看看我告诉它看到的任何细胞,并显示值(就像我说的,只是testing/玩耍)。

但是,如果单元格A1中的值是一个整数,则会出现“RuntimeBinderException was unhandled”错误。 它说

 "An unhandled exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll Additional information: The best overloaded method match for 'System.Windows.Forms.MessageBox.Show(string)' has some invalid arguments" 

但是,如果该值是一个STRING,那么它工作正常。 我已经尝试使用Cell.ToString(),显然只是给单元格作为COM。 我已经尝试过使用Cell.Value.ToString,它不存在….看着智能感知它说,实际上正在读取的值(我用'11'作为值)。

此外,我注意到,如果我在下面运行我的代码,然后尝试打开Excel进行编辑,它会告诉我,Excel已被locking,以供自己编辑。 我猜我需要closures连接string,但我不知道该怎么做。

我会closuresmyapp,还是wb或表单? 我尝试了各种各样的_ .Close()和我认为显而易见的其他东西,但是nada。 有关于此的任何提示?

感谢大家!

所以我find了这样做的原因…它是一个整数。 咄。 我猜你不能使用Cell.Value.ToString(); 在MessageBox.Show事件中,所以这就是我最终需要做的事情,它完美的工作。

  if (questionPath != "") { Excel.Application myapp = new Excel.Application(); Excel.Workbook wb = myapp.Workbooks.Open(questionPath); Excel.Worksheet sheet = (Excel.Worksheet)wb.Worksheets.get_Item(1); var cell = (Excel.Range)sheet.Cells[1, 1]; var temp = cell.Value.ToString(); MessageBox.Show(temp); } 

谢谢你的帮助! 我似乎没有得到任何问题与Excel被locking为只读,但我没有改变任何东西…假设这是用户错误