#值!包含用户定义函数的单元格中的错

时间:2011-06-01 13:31:27

标签: c# excel

我需要使用C#作为只读打开Excel工作簿。没有问题。但是如果该工作簿是使用自动过滤器保​​存的,我需要使用c#将其关闭,这样我就可以将工作表值读入我的课程。问题是,如果一个单元格中有一个用户定义的函数,那么该单元格将显示#VALUE!自动过滤器关闭而不是正确值时出错。如果我只使用Excel手动关闭自动过滤器,这不是问题。所以我知道用户定义的函数本身没有问题。

这就是我在做的事情:

   Excel.Application app = new Excel.Application();
   Excel.Workbook CIRworkbook;
   var missing = Missing.Value;

   bool openAsReadOnly = true;
   CIRworkbook = (Excel.Workbook)(app.Workbooks.Open(xlsFile, missing, openAsReadOnly, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing));

   app.get_Range("A:IV", missing).Worksheet.AutoFilterMode = false;
   app.CalculateFull();

app.CalculateFull()行对删除#VALUE没有影响!错误。

1 个答案:

答案 0 :(得分:0)

尝试使用以下语法获取包含工作表中值的所有单元格,而不管自动过滤器的开启/关闭或使用的实际过滤器。

我认为这就是你要找的东西:

Worksheet currSheet = excelApp.ActiveWorkbook.ActiveSheet;
object[,] objData = (object[,])currSheet.UsedRange.Value2;

Value2成员保存单元格/范围的下划线内容。如果您正在查找向用户显示的可见字符串,请使用Text属性。

相关问题