.net dataexcel 脚本公式 函数源码

avatar
作者
猴君
阅读量:0

示例如:

ScriptExec(""sum(1, 2, 3, 4)"") 结果等于10

using Feng.Excel.Builder; using Feng.Excel.Collections; using Feng.Excel.Interfaces; using Feng.Script.CBEexpress; using Feng.Script.Method; using System; using System.Collections.Generic; using System.Drawing;  namespace Feng.Excel.Script {     [Serializable]     public class ScriptFunctionContainer : DataExcelMethodContainer     {          public const string Function_Name = "DataExcelScript";         public const string Function_Description = "脚本函数";         public override string Name         {             get { return Function_Name; }          }         public override string Description         {             get { return Function_Description; }         }          public ScriptFunctionContainer()         {             BaseMethod model = null;              model = new BaseMethod();             model.Name = "ScriptExec";             model.Description = "执行脚本";             model.Eg = @"=ScriptExec(""sum(1, 2, 3, 4)"") 结果等于10";             model.Function = ScriptExec;             MethodList.Add(model);              model = new BaseMethod();             model.Name = "ScriptIF";             model.Description = "第一参数为True返回第二个参数,否则返加第三个参数";             model.Eg = @"ScriptIF(1>2,10,30)结果等于30";             model.Function = ScriptIF;             MethodList.Add(model);              model = new BaseMethod();             model.Name = "ScriptIsNull";             model.Description = "第一参数为null返回第二个参数,否则返加第一个参数";             model.Eg = @"ScriptIsNull(null,1)";             model.Function = ScriptIsNull;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptArg";             model.Description = @"获取或设置参数 ScriptArg(""argname"")";             model.Eg = @"ScriptArg(""argname"")";             model.Function = ScriptArg;             MethodList.Add(model);              model = new BaseMethod();             model.Name = "ScriptExecG";             model.Description = @"在传第一个参数表格上执行脚本 ScriptExecG(grid)";             model.Eg = @"ScriptExecG(grid)";             model.Function = ScriptExecG;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptSaveContext";             model.Description = @"保存当前执行上下文 ScriptSaveContext()";             model.Eg = @"var context=ScriptSaveContext()";             model.Function = ScriptSaveContext;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptReStoreContext";             model.Description = @"还原当前上下文 ScriptReStoreContext(context)";             model.Eg = @"ScriptReStoreContext(context)";             model.Function = ScriptReStoreContext;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptSwitchContext";             model.Description = @"切换当前上下文 ScriptSwitchContext(grid,cell)";             model.Eg = @"ScriptSwitchContext(grid,cell)";             model.Function = ScriptSwitchContext;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptCellValueChanged";             model.Description = @"获取或设置单元格值变化时脚本 ScriptCellValueChanged(cell,script)";             model.Eg = @"ScriptCellValueChanged(cell,script)";             model.Function = ScriptCellValueChanged;             MethodList.Add(model);              model = new BaseMethod();             model.Name = "ScriptCellClick";             model.Description = @"获取或设置单元格单击时脚本 ScriptCellClick(cell,script)";             model.Eg = @"ScriptCellClick(cell,script)";             model.Function = ScriptCellClick;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptCellDoubleClick";             model.Description = @"获取或设置单元格双击时脚本 ScriptCellDoubleClick(cell,script)";             model.Eg = @"ScriptCellDoubleClick(cell,script)";             model.Function = ScriptCellDoubleClick;             MethodList.Add(model);              model = new BaseMethod();             model.Name = "ScriptCellKeyDown";             model.Description = @"获取或设置单元格键盘按下时脚本 ScriptCellKeyDown(cell,script)";             model.Eg = @"ScriptCellKeyDown(cell,script)";             model.Function = ScriptCellKeyDown;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptCellKeyUp";             model.Description = @"获取或设置单元格键盘抬起时脚本 ScriptCellKeyUp(cell,script)";             model.Eg = @"ScriptCellKeyUp(cell,script)";             model.Function = ScriptCellKeyUp;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptGridEndEdit";             model.Description = @"获取或设置表格结束编辑时脚本 ScriptGridEndEdit(grid,script)";             model.Eg = @"ScriptGridEndEdit(grid,script)";             model.Function = ScriptGridEndEdit;             MethodList.Add(model);              model = new BaseMethod();             model.Name = "ScriptGridLoadCompleted";             model.Description = @"获取或设置表格加载结束时脚本 ScriptGridLoadCompleted(grid,script)";             model.Eg = @"ScriptGridLoadCompleted(grid,script)";             model.Function = ScriptGridLoadCompleted;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptGridClick";             model.Description = @"获取或设置表格单击脚本 ScriptGridClick(grid,script)";             model.Eg = @"ScriptGridClick(grid,script)";             model.Function = ScriptGridClick;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptGridDoubleClick";             model.Description = @"获取或设置表格双击脚本 ScriptGridDoubleClick(grid,script)";             model.Eg = @"ScriptGridDoubleClick(grid,script)";             model.Function = ScriptGridDoubleClick;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptGridValueChanged";             model.Description = @"获取或设置表格值改变时脚本 ScriptGridValueChanged(grid,script)";             model.Eg = @"ScriptGridValueChanged(grid,script)";             model.Function = ScriptGridValueChanged;             MethodList.Add(model);               model = new BaseMethod();             model.Name = "ScriptGridKeyDown";             model.Description = @"获取或设置表格键按下时脚本 ScriptGridKeyDown(grid,script)";             model.Eg = @"ScriptGridKeyDown(grid,script)";             model.Function = ScriptGridKeyDown;             MethodList.Add(model);              model = new BaseMethod();             model.Name = "ScriptGridKeyUp";             model.Description = @"获取或设置表格键抬起时脚本 ScriptGridKeyUp(grid,script)";             model.Eg = @"ScriptGridKeyUp(grid,script)";             model.Function = ScriptGridKeyUp;             MethodList.Add(model);         }         public virtual object ScriptGridKeyUp(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyKeyUp;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyKeyUp = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptGridKeyDown(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyKeyDown;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyKeyDown = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptGridValueChanged(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyValueChanged;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyValueChanged = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptGridDoubleClick(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyDoubleClick;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyDoubleClick = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptGridClick(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyClick;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyClick = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptGridLoadCompleted(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyDataLoadCompleted;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyDataLoadCompleted = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptFormClosing(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyFormClosing;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyFormClosing = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptGridEndEdit(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 DataExcel cell = base.GetArgIndex(1, args) as DataExcel;                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyEndEdit;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyEndEdit = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptCellKeyUp(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 ICell cell = base.GetCell(1, args);                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyOnKeyUp;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyOnKeyUp = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptCellKeyDown(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 ICell cell = base.GetCell(1, args);                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyOnKeyDown;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyOnKeyDown = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptCellDoubleClick(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 ICell cell = base.GetCell(1, args);                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyOnDoubleClick;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyOnDoubleClick = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptCellClick(params object[] args)         {               Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 ICell cell = base.GetCell(1, args);                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyOnClick;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyOnClick = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptCellValueChanged(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 ICell cell = base.GetCell(1, args);                 if (cell == null)                 {                     return Feng.Utils.Constants.Fail;                 }                 if (args.Length == 2)                 {                     return cell.PropertyOnCellValueChanged;                 }                 string script = base.GetTextValue(2, args);                 cell.PropertyOnCellValueChanged = script;                 return Feng.Utils.Constants.OK;             }             return null;         }          public virtual object ScriptArg(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 string key = base.GetTextValue(1, args);                 if (args.Length == 3)                 {                     object value = base.GetArgIndex(2, args);                     proxy.SetKeyValue(key, value);                     return Feng.Utils.Constants.OK;                 }                 return proxy.GetKeyValue(key);             }             return null;         }          public virtual object ScriptIsNull(params object[] args)         {             if (args.Length > 1)             {                 object value1 = args[1];                 object value2 = args[2];                 if (value1 == null)                 {                     return value2;                 }                 else                 {                     return value1;                 }             }             return null;         }          public virtual object ScriptIF(params object[] args)         {             if (args.Length > 2)             {                 object value1 = args[1];                 object value2 = args[2];                 object value3 = args[3];                 bool res = Feng.Utils.ConvertHelper.ToBoolean(value1);                 if (res)                 {                     return value2;                 }                 else                 {                     return value3;                 }             }             return null;         }          public virtual object ScriptExec(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 string txt = base.GetTextValue(1, args);                 int len = args.Length - 2;                 if (len > 0)                 {                     object[] values = new object[len];                     for (int i = 0; i < len; i++)                     {                         values[i] = args[i + 2];                     }                     return ScriptBuilder.Exec(proxy.Grid, proxy.CurrentCell, txt, values);                 }                 return ScriptBuilder.Exec(proxy.Grid, proxy.CurrentCell, txt);             }             return null;         }          public virtual object ScriptExecG(params object[] args)         {             DataExcel grid = base.GetArgIndex(1, args) as DataExcel;             string txt = base.GetTextValue(2, args);             int len = args.Length - 3;             if (len > 0)             {                 object[] values = new object[len];                 for (int i = 0; i < len; i++)                 {                     values[i] = args[i + 3];                 }                 return ScriptBuilder.Exec(grid, null, txt, values);             }             return ScriptBuilder.Exec(grid, null, txt);          }          public virtual object ScriptSaveContext(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 Feng.Collections.HashtableEx scriptContext = new Feng.Collections.HashtableEx();                 scriptContext.Add("Grid", proxy.Grid);                 scriptContext.Add("Cell", proxy.CurrentCell);                 return scriptContext;             }             return null;         }          public virtual object ScriptReStoreContext(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 Feng.Collections.HashtableEx scriptContext = base.GetArgIndex(1, args) as Feng.Collections.HashtableEx;                 if (scriptContext != null)                 {                     proxy.Grid = scriptContext["Grid"] as DataExcel;                     proxy.CurrentCell= scriptContext["Cell"] as ICell;                     return Feng.Utils.Constants.OK;                 }             }             return Feng.Utils.Constants.Fail;         }          public virtual object ScriptSwitchContext(params object[] args)         {             Feng.Excel.Script.DataExcelScriptStmtProxy proxy = args[0] as Feng.Excel.Script.DataExcelScriptStmtProxy;             if (proxy != null)             {                 proxy.Grid = base.GetArgIndex(1, args) as DataExcel;                 proxy.CurrentCell = base.GetArgIndex(2, args) as ICell;                 return Feng.Utils.Constants.OK;              }             return Feng.Utils.Constants.Fail;         }     } } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!