我有几个来自数据库的公式和数据.我想通过ExcelDna以编程方式刷新所有公式.所有这些公式都是ExcelFunctions,我已经把ExcelCommand name ="Refresh"放在我想要重新计算到Excel表格上.
我使用以下但它只刷新本机excel函数,例如NOW(),SUM()等.它不会调用ExcelDna函数上的刷新?
[ExcelCommand(MenuName="Refresh", MenuText="Refresh" )]
public static void GetPositionCommand()
{
XlCall.Excel(XlCall.xlcCalculateNow);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢...
xlcCalculateNow将仅计算Excel知道必须重新计算的公式.您可以将Excel函数标记为"易失性",使其表现得像Excel的NOW()函数,每次都会重新计算.使用Excel-DNA,您可以这样做:
[ExcelFunction(IsVolatile=true)]
public static string MyVolatileNow()
{
return DateTime.Now.ToString("HH:mm:ss.fff");
}
Run Code Online (Sandbox Code Playgroud)
并与默认的非易失性情况进行比较:
[ExcelFunction]
public static string MyNow()
{
return DateTime.Now.ToString("HH:mm:ss.fff");
}
Run Code Online (Sandbox Code Playgroud)
将数据推送到Excel的另一种方法是创建RTD服务器或在最新的Excel-DNA签到中使用新的Reactive Extensions for Excel(RxExcel)支持.这里有一些信息 - http://exceldna.codeplex.com/wikipage?title=Reactive%20Extensions%20for%20Excel.