在 ac# UDF for excel 2007 中,我需要评估 Excel 函数参数的值(不要问为什么,长篇大论)。
假设我们有这个 Excel 函数来评估:
=afunctionname("2009-01-01" ; "B4" ; "foo" ; 连接("a";"b") )
我的目标是得到一个字符串:
=afunctionname("2009-01-01" ; "B4 单元格的值" ; "foo" ; "ab" )
由于这个片段,我评估了参数的值:
Object comObject = app.Evaluate(param); //app = Microsoft.Office.Interop.Excel.Application
String value = getValueFromComObject(comObject);
getValueFromComObject 详细信息:
private static String getValueFromComObject(Object comObject) {
if ((comObject as Range) != null)
{
Range rge = ((Range)comObject);
switch (Type.GetTypeCode(rge.Value.GetType()))
{
case TypeCode.DateTime:
return ((DateTime)rge.Value).ToShortDateString();
default:
return rge.Value.ToString().Trim();
}
}
else
{
return comObject.ToString();
}
}
我们示例的第一个和第三个参数直接通过 application.Evaluate 作为 String 返回。第二个参数作为一个范围返回,并且由于类型转换而得到正确管理。
问题出在第四个参数上,我不知道女巫演员类型我必须应用于连接函数的评估,它显然不是一个范围,toString() 给了我参考:-2146826273
任何的想法?