2.函数

Supcan Report的函数是通过插件/加载项的 func( string funcname, string paras ) 函数间接调用的，在此列举了Supcan Report组件的可用funcname及用途说明。

分类 | 函数名 | 用途
--- | --- | ---
基本 | Build 或 ReadSheet | 打开一张报表
Calc 或 Fill | 执行报表的计算，包括数据源的取数填充
GetFileXML | 取得当前报表的XML串
GetFileURL | 取得上次打开(Build)的报表的文件名, 包括URL
SubscribeEvent | 预订事件
CallFunc | 调用工具条上的功能
GetHandle | 取得工作表、或Validation、或树列表、或数据源、或内部非模式对话框的句柄
数据源 | SetSource (用途1) | 设置中心数据源编目的URL
SetSource (用途2) | 设置某临时数据源的URL
SetSource (用途3) | 强制更改某中心数据源的dataURL
GetSource | 取得数据源的URL
GetSources | 取得所有数据源的ID
GetSourceInfo | 取得某数据源的某些属性
SetSourceInfo | 设置某数据源的某些属性
SetParas (语法1) | 设置某数据源的参数的值
SetParas (语法2) | 设置某数据源的参数的值
SetParasEx | 强制设定数据源的附加参数
GetParaNames | 取得某数据源的参数名
SetDSColInfo | 设置或添加某临时数据源的某个数据列信息
DeleteDSCol | 删除某临时数据源的某个数据列
NewDS | 新建中心数据源
DeleteDS | 删除数据源
SynchCenterDS | 强制中心数据源和后端同步
GetWorkSheetNameOfDs | 取得某数据源能够被用于哪些工作表
GetDsOfWorkSheet | 取得工作表能使用哪些数据源
GetColsOfDS | 取得某数据源对应到表格中的各个列
GetDSFillInfo | 取得某数据源对应到表格中的行、列信息
GetDSXML | 取得某数据源的XML描述串
SetDSXML | 设定数据源的XML描述串，动态更改或添加数据源
GetUsedDS | 取得工作表的计算公式中使用了哪些数据源
ParseUsedDS | 取得工作表的计算公式中使用了哪些数据源，包括参数
行列 | GetRows | 取得总行数
GetCols | 取得总列数
InsertRows (语法1) | 插入行
InsertRows (语法2) | 插入行
InsertCols (语法1) | 插入列
InsertCols (语法2) | 插入列
DeleteRows | 删除行
DeleteCols | 删除列
IsRowHide | 某行是否被隐藏
HideRow | 隐藏行
IsColHide | 某列是否被隐藏
HideCol | 隐藏列
GetRowOffset | 取得某行的偏移量
GetColOffset | 取得某列的偏移量
GetRowHeight | 取得某行高
SetRowHeight | 设置某行高
GetColWidth | 取得某列宽
SetColWidth | 设置某列宽
GetRowProp | 取得某行的某些属性
SetRowProp | 设置某行的某些属性
GetColProp | 取得某列的某些属性
SetColProp | 设置某列的某些属性
SetRowUserProp SetColUserProp | 设置某行/某列的某个自定义属性的值
GetRowUserProp GetColUserProp | 取得某行/某列的某个自定义属性的值
GetRowUserProps GetColUserProps | 取得某行/某列的所有自定义属性名
RemoveRowUserProps RemoveColUserProps | 清除某行/某列所有自定义属性
SeparateView | 设置分屏冻结
Sort | 排序
SortDS | 对数据源填入区进行排序
单元格命名相关函数 | GetCellName | 根据行列号得到单元名
GetCellRow | 根据单元名得到行号
GetCellCol | 根据单元名得到列号
单元格 | SelectCell(用途1) | 选取焦点单元、或嵌入对象(如文本框)
GetCurrentCell | 取得当前焦点单元格
GetCurrentCells | 取得当前焦点单元格
EnsureVisible | 自动滚动到让某单元格可见
GetCellData | 取得某单元的内容或计算结果
SetCellData | 设置某单元内容、或公式
GetCellDataEx | 取得某单元的内容或计算结果(Checkbox优先)
SetCellDataEx | 设置某单元内容、或公式(CheckBox优先)
GetCellText | 取得某单元的显示内容
GetCellFormula | 取得某单元的计算公式
GetCellProp(用途1) | 取得某单元格的属性(包括自定义属性)
SetCellProp(用途1) | 设置某单元格的属性(包括自定义属性)
GetCellUserProps | 取得某单元格的全部自定义属性名
GetCellFont | 取得单元格的字体信息
SetCellFont | 设置单元格的字体信息
FindCell | 根据表达式查找单元格
CloneArea | 克隆区域
单元格合并 | GetCellStatus | 取得某单元格的状态
GetMainCell | 取得某单元格所在的合并区域中的主单元格(即左上角单元格)
GetMergedCells | 取得某单元格所在的合并区域
Merge | 合并单元格
DeMerge(用法1) | 解除指定区域的合并
DeMerge(用法2) | 解除某个单元格所在区域的合并
MergeSame(用途1) | 合并某行给定范围内相同内容的单元格
MergeSame(用途2) | 合并某列给定范围内相同内容的单元格
MergeSame(用途3) | 多个列按大类、小类方式, 跨行合并相同内容的单元格
SplitCol | 将某列分拆成多列，并自动合并同类项
GetValidCells | 取得某个区域内有效的单元格
内嵌对象(文本框/图片/统计图/线条) | GetGraphics | 取得所有内嵌对象的别名
GetCellProp(用途2) | 取得某内嵌对象的属性
SetCellProp(用途2) | 设置某内嵌对象的属性
DeleteGraphics | 删除某些内嵌对象
Chart_Refresh | 刷新统计图显示
工作表 | GetWorksheets | 取得工作表的个数
GetCurrentWorksheet | 取得当前工作表序号
SetCurrentWorksheet | 切换当前工作表
GetWorksheetName | 取得工作表的名称
SetWorksheetName | 修改工作表的名称
DeleteWorksheet | 删除工作表
AppendWorksheet | 添加工作表：从外部报表导入
AddWorksheet | 添加工作表：新建空的工作表
ExchangeWorkSheet | 工作表交换位置
GetWorksheetNameOfDS | 取得某数据源指定用于某些工作表的名称
HideWorkSheet | 隐藏工作表
UnhideWorkSheet | 工作表解除隐藏
GetHideWorkSheet | 取得隐藏的工作表
SetProp(用途1) | 设置工作表的某些属性
GetProp(用途1) | 取得工作表的某些属性
GetProp(用途2) | 取得工作表的交叉表、分类汇总配置XML
SetProp(用途2) | 设置工作表的交叉表、分类汇总配置XML
GetMemo | 取得某自由存储区的存储串
SetMemo | 设置某自由存储区的存储串
GetMemos | 取得自由存储区的所有ID
打印 | Print | 打印
BeginBatchPrint | 开始批打印
EndBatchPrint | 结束批打印，将打印任务发送给打印机
GetProp(用途3) | 取得工作表的打印配置属性
SetProp(用途3) | 设置工作表的打印配置属性
GetPrintProp | 取得工作表的某些常用打印配置属性
SetPrintProp | 设置工作表的某些常用打印配置属性
GetPrintPages | 取得打印的总页数
SetPrintPage | 指定下次打印时，具体打印哪些页
SetPrintAbreast | 设置并肩打印(2个工作表横向共享打印纸)
汇总上报模式 | SetItemLibraryURL | 设定指标库的URL
SetItemAttr | 动态修改指标的属性的值
GetUploadXML | 用于报表的汇总上报模式(WorkMode=UploadRuntime)，取得当前填入内容的XML串
SetUploadXML | 加载已上报的数据，用于报表的显示
GetUploadIndex | 取得当前采用了多个TabOrder方案中的哪一个，用于上报运行时
SetUploadIndex | 指定采用多个TabOrder方案中的某一个，用于上报运行时
GetUploadNames | 取得所有TabOrder方案的名称
GetUploadCells | 取得有TabOrder的单元名
SelectCell(用途2) | 用于上报运行时，直接打开第一个可输入的单元格的输入框
RebuildTabOrder | 重新整理、刷新所有 Taborder
简易提交(一) | ResetChanged | 合并修改内容，为以后调用 GetChangedCells( ) 作准备.
GetChangedCells | 取得所有被修改过的单元格.
简易提交(二) | CollectXML | 获取某些单元格的公式、内容
简易提交(数据源部分) | GetChangedXML | 取得数据源填充区内容的XML串
权限相关 | Swkrntpomzqa | 限制某些交互功能
addEditAbleOnly | 添加可编辑的单元格范围
addUnEditAbleOnly | 添加不可编辑的单元格范围
ClearLimit | 清理上述2个函数设置的权限
GetCellEditAble | 判断某单元是否有编辑权限
计算相关 | AddUserFunctions | 添加自定义函数的声明
RemoveUserFunctions | 清除自定义函数
SetBatchFunctionURL | 指定批处理自定义函数的URL地址
SetAutoCalc | 设置自动计算功能生效/失效
GetAutoCalc | 取得自动计算生效/失效
GetLastCalcError | 取得上次计算错误信息
SetHoldDSData | 在计算后, 设置数据源是否仍然保持数据
GetHoldDSData | 在计算后, 数据源是否仍然保持数据
外部统计图 (完全由API控制) | Chart_DeleteAllSeries | 清除所有系列
Chart_GetSeriesCount | 取得系列数
Chart_GetSeriesName | 取得某系列的名称
Chart_SetSeriesName | 系列的增删改操作
Chart_GetItemNames | 取得所有数据项的名称
Chart_GetItemName | 取得某数据项的名称
Chart_SetItemNames | 设置全部数据项的名称
Chart_SetItemName | 设置某个数据项的名称
Chart_GetValues | 取得某系列的全部数值
Chart_GetValue | 取得某系列的某个数值
Chart_SetValues | 设置某系列的全部数值
Chart_SetValue | 设置某系列的某个数值
下拉字典 | Droplists_Get | 取得所有下拉字典
Droplists_GetHandle | 取得某个下拉字典的句柄
Droplists_FindCells | 取得当前工作表中使用了某个下拉字典的所有单元格
Droplists_Delete | 删除某个下拉字典
Droplists_Add | 动态添加下拉字典
显示掩码 | Masks_Get | 取得所有显示掩码的id
Mask_Get | 取得某个显示掩码的表达式
Mask_Delete | 删除某个显示掩码
Mask_Add | 添加一个显示掩码
Mask_FindCells | 取得当前工作表中使用了某个显示掩码的单元格
工具条和菜单 | SetToolbarItemImage | 动态更改工具条中某按钮的图标
SetToolbarItemTip | 动态更改工具条中某按钮的Tip (鼠标滑过时的文字)
GetToolbarItemStatus | 取得工具条中某按钮/菜单项的状态
SetToolbarItemStatus | 动态更改工具条中某按钮/菜单项的状态
AddMenu | 增加自定义的弹出菜单项
AddHotKey | 增设快捷键
Undo控制 | EnableUndo | 启用或禁用Undo
IsUndoEnabled | Undo是否启用
EnableRedo | 启用或禁用Redo
IsRedoEnabled | Redo是否启用
Undo | 执行一步 Undo 操作
Redo | 执行一步 Redo 操作
SaveUndo | 保存当前状态到 Undo 缓存池
ResetUndo | 清空 Undo 缓存池
UndoAble | 判断 Undo 缓存池是否允许作 Undo 操作
RedoAble | 判断 Undo 缓存池是否允许作 Redo 操作
不太常用 | GetRedrawAble | 是否能够重画
SetRedrawAble | 设置让报表能够重画或不能重画
FlashCell | 开启或关闭单元格闪烁
CloseEdit | 强制关闭输入框
GetFont | 取得字体信息
AddFont | 添加字体
DisplayAsPrintSetup | 将报表切换成仅显示打印配置对话框样式
DisplayAsChart | 将报表切换成仅显示统计图
GetCurrentChart | 取得当前统计图(以显示统计图时)
GetActiveWindow | 取得当前主区域的窗口句柄
SetExportFilename | 设置转换输出的文件名
SetNavigator | 设置超链接的重定位，常用于服务器专版
AnalyzeUserFunction | 分析单元格的自定义函数

函数详解:

Build 或 ReadSheet | 打开一张报表 |
参数1 | 可以是如下几种： 1.报表的绝对 URL 或相对 URL (相对于当前页面), 该 URL 返回的是硕正报表的 XML 串; 2.报表的绝对 URL 或相对 URL (相对于当前页面), 该 URL 返回二进制, 是 Zip 压缩后的硕正报表; 3.报表的 XML 大串 4.Excel 文件或URL, 格式支持 xlxs、xls(需硕正企业版)
参数2 | 如果是 xlsx 或 xls(需硕正企业版) 文件，可以是 isWithFormula=[?]; SheetName=[?]; SheetNum=[?] 格式的串，含义如下: isWithFormula - true/false，表示是否也同时导入计算公式。不导入计算公式能加快打开的速度，默认是true; SheetName - 工作表的名称, 多个名称之间以逗号分隔, 表示仅打开这些工作表; SheetNum - 工作表的顺序号, 多个顺序号之间以逗号分隔, 顺序号从0开始计数，表示仅打开这些工作表;
返回值 | 1/0 - 成功/失败, 失败的原因通常为 URL 访问失败、返回的内容不是硕正报表的 XML 格式或非 xls、xlsx 格式
示例 | AF.func("Build", "../myrpt/report1.xml"); AF.func("Build", "../myrpt/report1.xlsx \r\n isWithFormula=false; SheetNum=0,3,8");

Calc 或 Fill | 执行报表的计算，包括数据源的取数填充 |
参数 | 可选，格式为 mode=[?];range=[?], 其含义分别为: mode - 计算模式，值可以为 synch、asynch, 分别表示同步计算、异步计算，默认是同步计算。异步模式用于改善在数据源取数时服务器端响应缓慢而导致的界面滞涩; range - 计算范围，值可以为： full - 表示计算全部工作表，默认; current - 仅计算当前工作表； 工作表序号(从0开始计数) - 指定计算某工作表，也可以是以逗号分隔的多个工作表，比如 “3,4,0” 表示顺序计算第四、第五、第一个工作表 单元格名 - 指定计算某单元格，也可以是单元格的别名、或者是以冒号(:)分隔的单元格范围
返回值 | (无)

备注

如果是异步计算，js不应该再执行针对AF的函数了，应该在“Calced”事件中处理后续事务，否则异步将失去意义(非常重要). 例如，如下脚本是不正确的：

    ...
    AF.func("calc", "mode=asynch");
    AF.func("SetCellData", "A1 \r\n 1.23");
    ...

从第三行开始，将不会被执行，原因你应该明白：多线程访问同一资源，极易导致冲突、崩溃.

示例 | AF.func("calc", "mode=asynch; range=current"); //异步计算，仅当前工作表 AF.func("calc", "range=B3:C5,A2,G2:G10,MyTh"); //指定单元格范围 (注: MyTh是某个单元格的别名)

GetFileXML | 取得当前报表的XML串 |
参数 | 可选，格式是 isSaveCalculateResult=[?], 值可以为 true - 连同数据源填入的数据一起保存; false - 清除数据源填入的数据; default - 按照报表模版中默认的选项(在报表属性中)
返回值 | XML串
备注 | 1.Supcan Report是以XML保存的，而不是二进制; 2.该函数取得报表的XML后，通常需要再通过Ajax发送给服务器，用以保存报表;
示例 | AF.func("GetFileXML", ""); AF.func("GetFileXML", "isSaveCalculateResult=true");

GetFileURL | 取得上次打开(Build)的报表的文件名, 包括URL |
参数 | (无)
返回值 | 文件名或URL，如果上次是通过一个XML大串Build的，那么返回该串

SubscribeEvent | 预订事件 |
参数 | 需要预订的事件有：CurSelChanged、Clicked、DblClicked、EditChanged、Editing、CellPropChanged，其含义分别是：当前单元格切换、鼠标点击单元格、鼠标双击单元格、单元格或文本框的内容输入已更新、单元格或文本框的输入框已打开并且内容有修改、工具箱中单元格的某些属性被修改
返回值 | (无)
备注 | BeforeCellPropChanged不需要单独预订，它将跟随CellPropChanged事件
示例 | AF.func("SubscribeEvent", "CurSelChanged, Clicked");

CallFunc | 调用工具条上的功能 |
参数1 | 功能号
参数2 | 取决于功能号
返回值 | 取决于功能号, 通常为: 1 - 成功, 0 - 失败
备注 | 功能号参见"工具条功能号"章节

GetHandle | 取得工作表、或Validation、或树列表、或数据源、或内部非模式对话框的句柄 |
参数 | 可以为串: Validation - 取得Validation句柄, 用于全局函数动态存取Validation; innerDialog - 取得内部非模式对话框的freeform的句柄; 树列表的别名 - 取得某内嵌树列表(Treelist)的句柄; 工作表的序号(纯数字, 从0开始计数) - 取得某工作表的句柄; 工作表名 - 取得某工作表的句柄; 数据源名 - 如 ds1, 取得该数据源的句柄，通常用于分页显示;
返回值 | 句柄串

SetSource (用途1) | 设置中心数据源编目的URL |
参数 | 中心数据源编目的URL(相对或绝对)
返回值 | (无)
备注 | 1.中心数据源的编目URL是一次设置、全局(进程)有效的; 2.建议在第一次打开报表前执行; 3.一旦设置了URL，报表数据源对话框中就不需要用户自己输入URL了： 4.建议该URL返回的XML/JSON数据支持SoapLike异常包
示例 | AF.func("setSource", "../center/dscenter.aspx"); AF.func("Build", "reports/myreport1.xml");

SetSource (用途2) | 设置某临时数据源的URL |
参数1 | 数据源ID
参数2 | URL(相对或绝对); 对于XML/JSON数据源，也允许是直接的XML大串
参数3 | 可选，格式为 Para2=[?], 其含义为: Para2 - 可以为data/URL, 表示声明上面的“参数2”是纯数据串还是一个URL，仅用于TXT格式的数据，因为TXT格式的数据有时候很难自动判断到底是数据还是URL。如果不声明，系统优先判断为URL .
返回值 | (无)
备注 | 1.必须先打开报表，再执行本函数，否则无效，这一点和中心数据源刚好相反; 2.建议该URL返回的XML/JSON数据支持SoapLike异常包
示例 | AF.func("Build", "reports/myreport1.xml"); AF.func("setSource", "ds1 \r\n dscenter/serv1.aspx");

SetSource (用途3) | 强制更改某中心数据源的dataURL |
参数1 | 数据源ID
参数2 | URL(相对或绝对)、或XML/JSON大串
返回值 | (无)
示例 | AF.func("setSource", "ds1 \r\n dscenter/serv1.aspx");

GetSource | 取得数据源的URL |
参数 | 数据源ID
返回值 | URL串
备注 | 1.如果报表中只有一个数据源，参数(ID)可以忽略; 2.如果该数据源是中心数据源，那么将返回它的dataURL;
示例 | var url = AF.func("GetSource", "ds1");

GetSources | 取得所有数据源的ID |
参数 | (无)
返回值 | 串，多个ID间以回车分隔. 例如串: ds1 ds2 ds3

GetSourceInfo | 取得某数据源的某些属性 |
参数1 | 数据源ID 注: 如果是复合XML数据源的子节点，应该命名为诸如 "ds1\node1" 这样的串(注意：在js中，应该写成"ds1\\node1")

参数2

属性名，可以是:
CenterID - 中心数据源编目中的ID，仅用于中心数据源;
WSFunction - Web Service的方法(Method)名，仅用于Web Service类型的临时数据源;
FieldID - 取得各数据项(列)的ID，按显示顺序排列、以回车分隔(不包括不显示的列);
FieldText - 取得各数据项(列)的标题文字，按显示顺序排列、以回车分隔(不包括不显示的列);
AllFieldID - 取得全部 (包括不显示的) 数据项(列)的ID，按显示顺序排列、以回车分隔;
AllFieldText - 取得全部 (包括不显示的) 数据项(列)的标题文字，按显示顺序排列、以回车分隔;
Sort - 排序串;
httpMethod - 临时数据源的 Get/Post方法串(数据源向导界面中的下拉内容);
ContentType - 临时数据源的 ContentType 串(数据源向导界面中的同名串);
para - 可变参数名，以回车分隔;
paraText - 可变参数的含义，以回车分隔;

返回值 | 串

SetSourceInfo | 设置某数据源的某些属性 |
参数1 | 数据源ID 注: 如果是复合XML数据源的子节点，应该命名为诸如 "ds1\node1" 这样的串(注意：在js中，应该写成"ds1\\node1")
参数2 | 属性名，可以是: Sort - 排序串; httpMethod - 临时数据源的 Get/Post方法串(数据源向导界面中的下拉内容), 可以是串"Get", "Post", "PostAndEncodeURI", "PostAndEncodeURI_WithoutComponent" 四种; ContentType - 临时数据源的 ContentType 串(数据源向导界面中的同名串);
参数3 | 值
返回值 | 无
备注 | 修改数据源的其它内容请用 SetDSColInfo, DeleteDSCol, SetDSXML 等函数
示例 | AF.func("SetSourceInfo", "ds1 \r\n sort \r\n capacity a,freight d");

SetParas (语法1) | 设置某数据源的参数的值 |
参数1 | 数据源ID
参数2 | 参数2、参数3...参数n，根据该数据源具体的定义
返回值 | (无)
备注 | 参数的个数和顺序, 必须和数据源中定义好的一致
示例 | AF.func("SetParas", "ds1 \r\n" + var1 +"\r\n"+ var2);

SetParas (语法2) | 设置某数据源的参数的值 |
参数1 | 数据源ID
参数2 | XML/JSON串、或类似"prop1=value1; prop2=value2; ..."的属性串
参数3 | 可选，格式为 isClear=[?], 含义为是否先清理以往的参数。如果 isClear=true, 表示清理以前设置的所有参数，isClear=false则表示未设置的参数继续沿用上次的, 默认是 false.
返回值 | (无)
备注 | 参数的个数可以是任意的，允许和数据源定义的参数不一致，这些参数最后都能体现在真实的URL中
示例 | AF.func("SetParas", "ds1 \r\n year=2012; month=2"); AF.func("SetParas", "ds1 \r\n year=2012 \r\n isClear=true");

SetParasEx | 强制设定数据源的附加参数 |
参数1 | 参数串，例如"OrgId=2001&Dept=33", 空串表示清除之
参数2 | 可选, 格式为 range=[?], 参数含义如下: range - 作用范围, 分 process 和 instance 二种, process 表示进程有效, 即全局有效; instance 表示控件实例有效, 比如 "AF1" 执行了此函数后就仅对 "AF1" 有效, "AF2" 或其它页面的控件均无效。默认是 process;
返回值 | (无)
备注 | 1.对报表中的所有数据源均有效, 且不分中心数据源和临时数据源; 2.这些参数将附加在数据源取数URL的后面，也就是说URL将被重新拼装; 3.如果原URL中已经包含同名的参数，将以该函数设置的为准; 4.process 和 instance 二种类型的附加参数, 在内存中分别存放在不同地方, 互不影响; 如果有同名, 那么 instance 的优先级更高
示例 | AF.func("SetParasEx", "a=1&b=2 \r\n range=process"); AF.func("SetParasEx", "a=10 \r\n range=instance"); 数据源的URL可能为 "http://localhost/test.jsp?myname=john&a=10&b=2"

GetParaNames | 取得某数据源的参数名 |
参数 | 数据源ID
返回值 | 参数名，若有多个参数，则以回车分隔

SetDSColInfo | 设置或添加某临时数据源的某个数据列信息 |
参数1 | 数据源ID 注: 如果是复合XML数据源的子节点，应该命名为诸如 "ds1\node1" 这样的串(注意：在js中，应该写成"ds1\\node1")
参数2 | 列名
参数3 | 列标题名
参数4 | 数据类型
返回值 | (无)
示例 | AF.func("SetDSColInfo", "ds1 \r\n capacity \r\n 容量 \r\n double");

DeleteDSCol | 删除某临时数据源的某个数据列 |
参数1 | 数据源ID 注: 如果是复合XML数据源的子节点，应该命名为诸如 "ds1\node1" 这样的串(注意：在js中，应该写成"ds1\\node1")
参数2 | 列名
返回值 | (无)

NewDS | 新建中心数据源 |
参数1 | 数据源ID
参数2 | 中心数据源的ID号
返回值 | (无)

DeleteDS | 删除数据源 |
参数 | 数据源ID
返回值 | 1 - 成功, 0 - 数据源不存在

SynchCenterDS | 强制中心数据源和后端同步，用于清理中心数据源的自定义信息，例如：列是否显示、列显示顺序、排序、超链接等. |
参数 | (无)
返回值 | (无)

GetWorkSheetNameOfDs | 取得某数据源能够被用于哪些工作表，用于在数据源对话框中限制了数据源和工作表对应关系的情况 |
参数 | (无)
返回值 | 工作表名, 若有多个工作表则以逗号分隔

GetDsOfWorkSheet | 取得工作表能使用哪些数据源，用于在数据源对话框中限制了数据源和工作表对应关系的情况 |
参数 | 可选，工作表名或工作表顺序号，从0开始计数。如果不指定工作表，则默认为当前工作表
返回值 | 数据源的ID, 若有多个数据源则以逗号分隔

GetColsOfDS | 取得某数据源对应到表格中的各个列, 即取得 =datarow( ) 函数横向填充的各个列的位置 |
参数 | 数据源ID
返回值 | 以逗号分隔的各个列的序号 (序号从0开始计数)

GetDSFillInfo | 取得某数据源对应到当前工作表中的行、列位置信息, 即取得 =datarow( ) 函数填充的行列信息 |
参数 | 数据源ID
备注 | 对区块填充无效

返回值

情形一.数据源普通填入
返回串是以回车分隔的如下5部分内容：
1.固定的串: "Normal";
2.数据源位于当前工作表的行号，从0开始计数，也即=datarow( )公式所在的行号;
3.数据源填充的行数;
4.数据源横向填充的列号，以逗号分隔;
5.数据源横向填充的各个列对应到数据源的列名，以逗号分隔;
返回串例如：

    Normal
    4
    3
    2,3,4,6
    id,company,price,city

表示行号4(即第五行)处开始，有3行数据填入(包括datarow( )所在行)，从左到右的列号分别是 2、3、4、6，对应到数据源的字段是id,company,price,city
情形二.填入区是分类汇总表
与 "情形一" 基本相同，除了第一部分固定串是 "Summary";
情形三.填入区是交叉表
返回串是以回车分隔的如下8部分内容：
1.固定的串: "Crosstab";
2.数据源位于当前工作表的行号，从0开始计数，也即=datarow( )公式所在的行号;
3.交叉表数据部分的开始填充的行号;
4.交叉表数据部分填充的行数，不包含表头部分;
5.交叉表数据区横向填充的列号，以逗号分隔;
6.交叉表数据区横向填充的列的内容，以逗号分隔;
7.交叉表非数据区横向填充的列号，以逗号分隔;
8.交叉表非数据区横向填充的列的内容，以逗号分隔;
返回串例如：

    Crosstab
    2
    4
    17
    3,4,5
    2013年前入职员工(原厂职工),2013年后入职员工,合计
    1,2
    国家,城市

表示 datarow 位于行号2(即第三行)，而数据部分(不包含动态表头)从行号4开始填入，有17行数据填入(不包含表头)，从左到右的动态列号分别是 3、4、5，以及对应的横向交叉结果

GetDSXML | 取得某数据源的XML描述串 |
参数 | 数据源ID
返回值 | XML串

SetDSXML | 根据数据源的XML描述串，动态更改或添加数据源 |
参数 | XML描述串，或URL
返回值 | 1/0 - 成功/失败

示例

//注：请注意 js 的字符串变量的书写语法，换行用 “\”， 字符串中的 “\”必须转义为“\\”(此语法属于 js 范畴，和硕正报表无关)

    var xml="<Data>\

     <ID>ds1</ID>\

     <Type>0</Type>\

     <Source>treelistdata/car.xml</Source>\

     <XML_RecordAble_Nodes>\

      <Node>\

       <name>record</name>\

      </Node>\

     </XML_RecordAble_Nodes>\

     <Columns>\

     <Column>\

       <name>record\\TradeMark</name>\

       <text>品牌</text>\

       <type>string</type>\

       <visible>true</visible>\

       <sequence>1</sequence>\

      </Column>\

      <Column>\

       <name>record\\Category</name>\

       <text>车型</text>\

       <type>string</type>\

       <visible>false</visible>\

       <sequence>6</sequence>\

      </Column>\

      <Column>\

       <name>record\\Model</name>\

       <text>型号</text>\

       <type>string</type>\

       <visible>true</visible>\

       <sequence>2</sequence>\

      </Column>\

     </Columns>\

    </Data>";

    AF.func("SetDSXML", xml);

备注

1.上例中, 如果 ds1 数据源不存在，它会自动添加, 否则则是替换;
2.本函数常用于动态更改数据源的内容，比如动态添加数据列. 由于XML结构比较复杂，建议借助全局函数中的 "DOM_函数" 来处理;
3.本函数只能增加或修改一个数据源, 如果您要动态处理多个数据源, 需要执行本函数多次;
4.XML中, <Type>为数据源类型，0/1/2/4/5/7 分别表示 XML/WebService/HTML Table/JSON/中心数据源/TXT格式数据源;
5.<Source> 就是 dataURL, 假如您肯定要执行 SetSource 的, 那么可以省略不写;
6.<XML_RecordAble_Nodes>\<Node>表示数据在 XML 数据包中的位置, 如果您的 XML 是平面的结果集数据, 其内容可以任意写, 就按例子中的 record 也没关系;
7.<Columns>\<Column>就是各个列了, 列数允许少于数据包中的列, 列顺序也不需要和数据包中的顺序一致, <name> 是列名，像上例中的 <name>record\\TradeMark</name>, 如果数据是平面的简单XML结果集, 左侧的"record\\"可以省略; <sequence>表示 datarow('ds1') 的左右填充顺序; <type>是数据类型, 有 string/decimal/date/datetime/boolean, 默认省略了就当做 string 型;
8.例子中是动态增加 XML 型临时数据源, 假如您要动态增加中心数据源, 可以这样写:

    AF.func("SetDSXML", "<Data><ID>ds1</ID><Type>5</Type><dataID>1001</dataID></Data>");

不需要写列结构, 因为 ds1 一建立，它会自动向服务器获取 ID 为 1001 的数据源列结构的.
下面是完整的空白报表建立中心数据源、加载数据的示例:

    function OnReady(id)
    {
      //指定中心数据源入口
      AF.func("SetSource", "reportdata/datacenter.xml");
      //动态新建报表
      AF.func("callfunc", "102 \r\n rows=5;cols=10");
      //动态使用 1001 中心数据源
      AF.func("SetDSXML", "<Data><ID>ds1</ID><Type>5</Type><dataID>1001</dataID></Data>");
      //动态插入函数、计算
      AF.func("SetCellData", "A2 \r\n=headrow('ds1')");
      AF.func("SetCellData", "A3 \r\n=datarow('ds1')");
      AF.func("calc", "");
    }

GetUsedDS | 取得工作表的计算公式中使用了哪些数据源 |
参数 | 可选，工作表名或工作表顺序号，从0开始计数； -1表示所有工作表；如果不指定工作表，则默认为当前工作表
参数 | 可选，指定函数名, 如 datarow、data、...等数据源函数, 表示仅返回在这些函数中使用了的数据源。允许是多个不同的函数, 函数名之间以逗号分隔
返回值 | 数据源的ID, 若有多个数据源则以逗号分隔

ParseUsedDS | 取得工作表的计算公式中使用了哪些数据源，包括参数 |
参数 | 可选，工作表名或工作表顺序号，从0开始计数； -1表示所有工作表；如果不指定工作表，则默认为当前工作表
参数 | 可选，指定函数名, 如 datarow、data、...等数据源函数, 表示仅返回在这些函数中使用了的数据源。允许是多个不同的函数, 函数名之间以逗号分隔
返回值 | 串，格式规定如下： 1.数据源的ID和参数, 相互之间以Tab(即\t)分隔，参数是原参数，即有可能是带引号的； 2.若有多种不同数据源及参数组合，则相互以回车符(\r\n)分隔;

GetRows | 取得总行数 |
参数 | (无)
返回值 | 数字

GetCols | 取得总列数 |
参数 | (无)
返回值 | 数字

InsertRows (语法1) | 插入行 (语法1) |
参数1 | 插入处行号(从0开始计数，-1表示从末尾添加)，也有“基准行”的意思，新插入行的单元格属性(比如颜色、边界线等等)都是从该行复制过去的
参数2 | 可选, 插入行数，默认1
参数3 | 可选, true/false(或1/0、yes/no)，分别表示前插/后插，默认前插
参数4 | 可选, true/false(或1/0、yes/no)，分别表示复制公式/不复制公式，默认不复制
返回值 | 1-成功，空串-失败
示例 | AF.func("insertRows", "1 \r\n 3 \r\n false"); //表示在第二行位置后插3行

InsertRows (语法2) | 插入行 (语法2) |
参数1 | 分号分隔的选项串, 格式为 at=[?]; pos=[?]; count=[?]; isCopyFormula=[?]; 含义和写法如下: at - 插入处行号(从0开始计数，-1表示从末尾添加)，此行也有“基准行”的意思，新插入行的单元格属性(比如颜色、边界线等等)都是从该行复制过去的; pos - 可以是 before/after, 分别表示前插/后插, 默认是前插; count - 插入行数，默认1 isCopyFormula - 是否把基准行的公式复制到新行, true/false, 默认是 false, 即不复制
返回值 | 1-成功，空串-失败
示例 | AF.func("insertRows", "at=1; count=3; pos=after"); //表示在第二行位置后插3行

InsertCols (语法1) | 插入列 (语法1) |
参数1 | 插入处列号(从0开始计数，-1表示从末尾添加)，或列名(如A、B、C..)，此列也有“基准列”的意思，新插入列的单元格属性(比如颜色、边界线等等)都是从该列复制过去的
参数2 | 可选, 插入列数，默认1
参数3 | 可选, true/false(或1/0、yes/no)，分别表示前插/后插，默认前插
返回值 | 1-成功，空串-失败

InsertCols (语法2) | 插入列 (语法2) |
参数 | 分号分隔的选项串, 格式为 at=[?]; pos=[?]; count=[?]; 含义和写法如下: at - 插入处列号(从0开始计数，-1表示从末尾添加)，或列名(如A、B、C..)，此列也有“基准列”的意思，新插入列的单元格属性(比如颜色、边界线等等)都是从该列复制过去的; pos - 可以是 before/after, 分别表示前插/后插, 默认是前插; count - 插入列数，默认1
返回值 | 1-成功，空串-失败
示例 | AF.func("insertCols", "at=A; pos=after"); //表示在A列处前后一列

DeleteRows | 删除行 |
参数1 | 开始删除的行号(从0开始计数)
参数2 | 行数，-1表示删除后面所有行
返回值 | 1-成功，空串-失败

DeleteCols | 删除列 |
参数1 | 开始删除的列号(从0开始计数)，或列名(如A、B、C..)
参数2 | 列数，-1表示删除后面所有列
返回值 | 1-成功，空串-失败

IsRowHide | 某行是否被隐藏 |
参数 | 行号(从0开始计数)
返回值 | 1/0 - 是/否

HideRow | 隐藏行 |
参数1 | 行号(从0开始计数)
参数2 | 可选，数量，默认1
参数3 | 可选，true/false - 隐藏/解除隐藏，默认true
返回值 | (无)

IsColHide | 某列是否被隐藏 |
参数 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 1/0 - 是/否

HideCol | 隐藏列 |
参数1 | 列号(从0开始计数)，或列名(如 A、K、AC)
参数2 | 可选，数量，默认1
参数3 | 可选，true/false - 隐藏/解除隐藏，默认true
返回值 | (无)

GetRowOffset | 取得某行的偏移量, 偏移量是相对于第一行的顶部，和屏幕无关 |
参数 | 行号(从0开始计数)
返回值 | 数字，单位：像素数

GetColOffset | 取得某列的偏移量, 偏移量是相对于第一列的左侧，和屏幕无关 |
参数 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 数字，单位：像素数

GetRowHeight | 取得某行高 |
参数 | 行号(从0开始计数)
返回值 | 数字，单位：像素数

SetRowHeight | 设置某行高 |
参数1 | 行号(从0开始计数)
参数2 | 数字，单位：像素数，范围：0-2000
返回值 | (无)

GetColWidth | 取得某列宽 |
参数 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 数字，单位：像素数

SetColWidth | 设置某列宽 |
参数1 | 列号(从0开始计数)，或列名(如 A、K、AC)
参数2 | 数字，单位：像素数，范围：0-2000
返回值 | (无)

GetRowProp | 取某行的其它属性 |
参数1 | 行号(从0开始计数)
参数2 | 请参见 SetRowProp 函数
返回值 | 取决于参数2, 请参见 SetRowProp 函数

SetRowProp | 设置某行的某些属性 |
参数1 | 行号(从0开始计数)
参数2 | ds - 该行是否数据源动态插入的行; print - 该行是否打印; pageBreak - 在该行处是否强制分页; pageNumber - 强制分页的页码; rulerMask - 该行标尺所显示的文字, 文字中允许含有宏 @row, 表示在显示时会被替换成实际的行号;
参数3 | 对于pageNumber属性，是页码数字；其它: true / false - 是 / 否
返回值 | 1/0 - 成功/失败
备注 | 1.这些内容将会保存在报表的XML中, 即效果是持久的; 2.不建议强制设置 ds 属性; 3.数据源动态插入的行(行号在左标尺以深蓝色显示)，在模版保存是会自动被删除

GetColProp | 取某列的属性 |
参数1 | 列名或列号
参数2 | 请参见 SetColProp 函数
返回值 | 串

SetColProp | 设置某列的某些属性 |
参数1 | 列名或列号
参数2 | rulerMask - 该列标尺所显示的文字, 文字中允许含有宏 @colname, 表示在显示时会被替换成实际的列名;
参数3 | 内容串
返回值 | 1/0 - 成功/失败
备注 | 这些内容将会保存在报表的XML中, 即效果是持久的;
示例 | AF.func("SetColProp", "D \r\n rulerMask \r\n 当前@colname列\\r\\n不可改"); //注：\\r\\n是串的换行符

SetRowUserProp SetColUserProp | 设置某行/某列的某个自定义属性的值 |
参数 | 行号 / 列名或列号
参数 | 属性名，必须符合变量命名规则
参数 | 值串, 如果是空串或忽略本参数，表示删除该自定义属性
返回值 | 1 - 成功; 0 - 失败, 失败原因通常为列不存在、属性名不符合常规的变量命名规则; -1 - 失败, 原因是属性名和系统保留词冲突
示例 | AF.func("SetColUserProp", "F \r\n MyVar \r\n 1234ABCD"); //设置 F 列自定义属性 AF.func("SetColUserProp", "F \r\n MyVar"); //删除 F 列该属性 AF.func("SetRowUserProp", "3 \r\n MyVar \r\n 3392"); //设置第四行的该属性

GetRowUserProp GetColUserProp | 取得某行/某列的某个自定义属性的值 |
参数 | 行号 / 列名或列号
参数 | 属性名
返回值 | 值串, 空串表示该属性不存在

GetRowUserProps GetColUserProps | 取得某行/某列的全部自定义属性名 |
参数 | 行号 / 列名或列号
返回值 | 以逗号分隔的自定义属性名

RemoveRowUserProps RemoveColUserProps | 清理某行/某列的全部自定义属性 |
参数 | 行号 / 列名或列号
返回值 | (无)

SeparateView | 设定分屏冻结 |
参数1 | 行数
参数2 | 列数
返回值 | (无)
示例 | AF.func("SeparateView", "4 \r\n 0"); //前4行上下分屏

Sort | 排序 |
参数 | 格式为: from=[?];to=[?];rows=[?];Exp=[?];MatchCase=[?], 含义和可用值为: from - 排序区的开始行, 从0开始计数; to - 排序区的终止行, 从0开始计数，也可以不采用本参数而使用 rows 参数; rows - 排序区的行数, 也可以不采用本参数而使用 to 参数; Exp 或 Express - 表达式，格式为 "列名或列号 a或d 数据类型"，如果不指明数据类型，那么系统将根据实际数据自动判断，多重排序则为逗号分隔，可参考例子; MatchCase - 对于字符型的列，大小写是否敏感, true/false 或 case/nocase, 默认是 false;
返回值 | 1/0 - 成功/失败， 失败的原因通常为：行数少于2行、Exp表达式书写错误
备注 | 1.如果同时采用了 to 和 rows 参数，则优先采用 to 参数； 2.如果你希望对数据源填入区进行排序，请使用 SortDS 函数
示例 | AF.func("Sort", "from=4; rows=10; Exp=D a int"); //按照 D 列数据作排序，数据类型强制认作int AF.func("Sort", "from=4; rows=10; Exp=D a int,5 d; matchCase=true"); //多重排序，先按照 D 列整型升序、再按照 F 列(F列的列号是5)降序排序，如果F列是字符串型，那么大小写是敏感的

SortDS | 对数据源填入区内的数据作排序 |
参数1 | 数据源的 ID
参数2 | 格式为: Exp=[?];MatchCase=[?];isKeepDataRowNumber=[?], 含义和可用值为: Exp 或 Express - 表达式，格式为 "字段名 a或d"，多重排序则为逗号分隔，可参考例子; MatchCase - 对于字符型的列，大小写是否敏感, true/false 或 case/nocase, 默认是 false; isKeepDataRowNumber - datarowNumber( ) 所在列，是否保持从小到大的顺序排列, true/false, 默认是 true;
返回值 | 1/0 - 成功/失败， 失败的原因通常为：行数少于2行、Exp表达式书写错误
示例 | AF.func("SortDS", "ds1 \r\n Exp=price"); //按照数据源 price 列对应到表格内的某列数据作排序 AF.func("SortDS", "ds1\inner\table \r\n Exp=price, subDep d"); //多重排序，先按照数据源price列整型升序、再按照SubDep列降序排序
备注 | 1.该排序仅仅是对表格内的数据进行排序，不会从后端加载数据的; 2.仅用于简单的数据源填入，不支持区块、分类汇总表、交叉表，如果这些类型的报表都要支持，建议你采用另外的方案：先执行 SetSourceInfo、再执行 Calc

GetCellName | 根据行列号得到单元名 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)
返回值 | 串 - 单元格名，如"D9"、"AA2
示例 | AF.func("GetCellName", "4 \r\n 0"); 返回 A5

GetCellRow | 根据单元名得到行号 |
参数 | 单元名, 或单元格范围
返回值 | 行号, 如果参数是单元格范围, 则返回逗号分隔的行号
示例 | AF.func("GetCellRow", "A5"); 返回 "4" AF.func("GetCellRow", "A5:D6"); 返回 "4,5"

GetCellCol | 根据单元名得到列号 |
参数 | 单元名, 或单元格范围
返回值 | 列号, 如果参数是单元格范围, 则返回逗号分隔的列号
示例 | AF.func("GetCellCol", "A5"); 返回 "0" AF.func("GetCellRow", "A5:D6"); 返回 "0,3"

SelectCell(用途1) | 选取焦点单元、或嵌入对象(如文本框) |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)
参数3 | 可选, 至行号, -1表示到末行
参数4 | 可选, 至列号, -1表示到末列
参数5 | 可选, 可以为input, 表示打开输入框，直接进入编辑状态
返回值 | true/false - 成功/失败
备注 | 参数也不一定要完全按照上述规定，语法其实是比较灵活的，请参见下面的示例：
示例 | AF.func("SelectCell", "A5"); //选取A5单元格 AF.func("SelectCell", "A5 \r\n B8"); //选取从A5单元格到B8单元格之间的区域 AF.func("SelectCell", "5 \r\n C"); //C 是列名， 表示第三列 AF.func("SelectCell", "B5 \r\n -1 \r\n -1"); //选取从B5单元格到报表右下角整个区域 AF.func("SelectCell", "Addr \r\n DKP"); //选取从别名为"Addr"的单元格到别名为"DKP"之间的区域 AF.func("SelectCell", "Addr \r\n input"); //选取别名为"Addr"的单元格或文本框，然后直接打开输入

GetCurrentCell | 取得当前焦点单元格 |
参数 | 可选，顺序号(从0开始计数)，默认是0. 如果当前焦点是一块区域，可以用顺序号参数逐个取得单元格名，循环顺序是逐行逐列
返回值 | 串，单元格名,如 "D4"、"E4"; 如果当前选中的是内嵌对象(如文本框)，则返回它的别名

GetCurrentCells | 取得当前焦点单元格 |
参数 | (无)
返回值 | 串，包含左上、右下的2个单元格名,如 "D4:E5"、"E4:E4", 注："E4:E4"是一个单元格; 如果当前选中的是内嵌对象(如文本框)，则返回以逗号分隔的别名

EnsureVisible | 自动滚动到让某单元格可见 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)
返回值 | true/false - 成功/失败
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名

GetCellData | 取得某单元的内容，或者计算公式的值 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 串
备注1 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
备注2 | 参数也可以是以冒号(:)分隔的单元格范围，如 A3:D5 , 用于一次性返回多个单元格的内容，返回的内容串中，行之间以回车符(\r\n)分隔、列之间以制表符(\t)分隔
示例 | var s1 = AF.func("getCellData", "3 \r\n 9"); var s2 = AF.func("getCellData", "B7"); var s3 = AF.func("getCellData", "B7@Sheet2"); //指定取第二个工作表 var s4 = AF.func("getCellData", "MyTh"); //"MyTh"是别名 var s5 = AF.func("getCellData", "D3:F8"); //一次性取多个单元格的内容

SetCellData | 设置某单元的内容、或计算公式(计算公式以等号开头) |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 串
返回值 | (无)
备注 | 1.也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格); 2.也支持同时处理多个单元格，单元格名以逗号(,)分隔、且支持以冒号(:)分隔2个单元格名的矩形区域，请参见下面的示例; 3.严重警告：参数2和参数3之间不得留有多余空格，否则结果将不是你所期望的，例如： AF.func("SetCellData", "C5 \r\n "+ vCity);　　//执行结果是左侧有多余空格; 4.如果 js 循环执行多遍时发现性能下降(界面很卡)，可以试试 SetRedrawAble 函数;
示例 | AF.func("SetCellData", "3 \r\n 9 \r\n年度计划"); AF.func("setCellData", "B7\r\n=B8+B9"); //为B7单元格设置公式 AF.func("setCellData", "B7@Sheet2 \r\n年度计划"); //指定第二个工作表 AF.func("setCellData", "MyTh \r\n年度计划"); //"MyTh"是别名 AF.func("setCellData", "A1,B3:B10, C3:C11, E11, MyTh \r\n12"); //同时将多个单元格内容全部设置为"12"

GetCellDataEx | 取得某单元的内容或计算结果(Checkbox优先) |
参数 | 同 GetCellData
返回值 | 串
备注 | 和 GetCellData 函数唯一的差别是：如果单元格是CheckBox，那么返回的是 0 或 1，否则和GetCellData一样

SetCellDataEx | 设置某单元内容、或公式(CheckBox优先) |
参数 | 同 SetCellData
返回值 | (无)
备注 | 和 SetCellData 函数唯一的差别是：如果单元格是CheckBox、并且最后一个参数是 1、0或空串，那么就设置这个CheckBox, 而不修改文字.

GetCellText | 取得某单元的显示内容 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 串
备注1 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
备注2 | 参数也可以是以冒号(:)分隔的单元格范围，如 A3:D5 , 用于一次性返回多个单元格的内容，返回的内容串中，行之间以回车符(\r\n)分隔、列之间以制表符(\t)分隔
示例 | var s1 = AF.func("getCellText", "3 \r\n 9"); var s2 = AF.func("getCellText", "B7"); var s3 = AF.func("getCellText", "B7@Sheet2"); //指定取第二个工作表 var s4 = AF.func("getCellText", "MyTh"); //"MyTh"是别名 var s5 = AF.func("getCellText", "A1:A9"); //一次性取多个单元格的内容

GetCellFormula | 取得某单元的计算公式 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 串, 空串表示非计算公式
备注1 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
备注2 | 参数也可以是以冒号(:)分隔的单元格范围，如 A3:D5 , 用于一次性返回多个单元格的内容，返回的内容串中，行之间以回车符(\r\n)分隔、列之间以制表符(\t)分隔

GetCellProp(用途1) | 取得某单元格的属性(包括自定义属性) |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)

参数3

属性名，大约有20多种, 也可以是自定义属性，这些属性都是保存在报表的XML中，如:

TextColor - 文字色 | BgColor - 背景色
formula - 输入的公式 | datatype - 数据类型
decimal - 小数位数 | isRound - 是否四舍五入
isThousandSeparat - 千位符 | isProtected - 保护
align - 水平对齐 | vAlign - 垂直对齐
fontIndex - 字体 | Alias - 别名
leftBorder - 左边界线宽 | topBorder - 上边界线宽
leftBorderColor - 左边界线色 | topBorderColor - 上边界线色
leftBorderStyle - 左边界线型 | topBorderStyle - 上边界线型
isCheckbox - 是否为复选框 | isChecked - 复选框是否选上
checkboxGroup - 单选框的组名 | HRef - 超链接
maskId - 显示掩码Id | Tip - 鼠标划过的提示
droplistId - 下拉字典Id | droplistPara - 下拉参数
Arrow - 左侧标记色 | indent - 文字左侧缩进量
crosstabRowDir - 交叉表的行值 | crosstabColDir - 交叉表的列值
dispText - 单元格强制显示内容 | ImageArrange - 以图片显示时的缩放模式
IsAbsRef - 公式中的单元格名是否绝对引用 |
rightButton - 单元格右侧的图标的URL, 当鼠标划过时会显示, 鼠标点击时将触发Clicked事件, 如图: 建议采用相对路径(相对于报表XML), 并采用有透明效果的 ico 或 png格式
如下是上报模式的属性:
Attr - 指标属性 | taborder - 回车的跳转次序
此外，如果是含有内嵌表格的报表(上报模式)，还可以获得如下属性:
EmbedTableId - 内嵌表格的id | EmbedTableColName - 所处的列的列名
EmbedTableColDataType - 列的数据类型 | EmbedTableHideColInfo - 各个隐藏列的数据，格式是 "列名=值;列名=值"
EmbedTableColEditAble - 列是否可编辑 | EmbedTableColUpdateAble - 列是否上报

返回值 | 内容串(透明的背景色用“T”表示)
备注1 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
备注2 | 参数也可以是以冒号(:)分隔的单元格范围，如 A3:D5 , 用于一次性返回多个单元格的内容，返回的内容串中，行之间以回车符(\r\n)分隔、列之间以制表符(\t)分隔

SetCellProp(用途1) | 设置某单元格的属性(包括自定义属性) |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 属性名, 和GetCellProp( )同
参数4 | 值串 注1: 透明的背景色请用“T”表示; 注2: 对于自定义属性，空串表示删除该属性.
返回值 | (无)
备注 | 1.也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格); 2.也支持同时处理多个单元格，单元格名以逗号(,)分隔、且支持以冒号(:)分隔2个单元格名的矩形区域，请参见下面的示例; 3.也支持同时处理多个属性，相互之间以分号(;)分隔，格式类似 "prop1=value1; prop2=value2" 这样的，请参见下面的示例 4.如果 js 循环执行多遍时发现性能下降(界面很卡)，可以试试 SetRedrawAble 函数;

示例

AF.func("SetCellProp", "C6 \r\n BgColor \r\n T");
AF.func("SetCellProp", "C6 \r\n TextColor \r\n Red");
AF.func("SetCellProp", "C6 \r\n CustormerID \r\n 33801"); //自定义属性
AF.func("SetCellProp", "C6,D7,A3:A10,MyTh \r\n TextColor \r\n Red"); //同时设置多个单元格，注："MyTh"是某个单元格的别名
AF.func("SetCellProp", "C6 \r\n TextColor=Red; CustomerId=33801"); //同时设置多种属性
AF.func("SetCellProp", "C6,D7,A3:A10,MyTh \r\n TextColor=Red; CustomerId=33801"); //同时设置多个单元格、多种属性

GetCellUserProps | 取得某单元格的全部自定义属性名 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 以回车分隔的自定义属性名
备注 | 1.也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格); 2.要取得具体属性的值，请用 GetCellProp 函数.

GetCellFont | 取得单元格的字体信息 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 属性名, 可以为: FontName(或 Name、FaceName)、Height(或size，但含义不一样)、Bold三种
返回值 | 按参数返回内容，参数和返回值对应如下: FontName(或 Name、FaceName) - 返回字体名，例如"Arial" 、 "微软雅黑"; Height (或size) - 返回字体大小, height表示返回logfont的lfHeight， 可能为负数; size表示返回转换后的大小，肯定是正数 Bold - 字体是否加粗, 返回1或0
备注1 | 1.也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格); 2.该功能是存取单元格字体的快捷功能，以1.0.90.0版前的版本中，通常需要执行GetCellProp、GetFont多条js才能实现; 3.也适用于有别名的文本框对象
备注2 | 参数1和参数2也可以合并成以冒号(:)分隔的单元格范围，如 A3:D5 , 用于一次性返回多个单元格的内容，返回的内容串中，行之间以回车符(\r\n)分隔、列之间以制表符(\t)分隔
示例 | var h = AF.func("getCellFont", "C6 \r\n size"); var h = AF.func("getCellFont", "D3:E6 \r\n size");

SetCellFont | 设置单元格的字体信息 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 属性名, 可以为: FontName(或 Name、FaceName)、Height(或size)、Bold三种
返回值 | 1/0 - 成功/失败
备注 | 1.请参见上面的 GetCellFont 函数, 但参数 Height/Size 是无差别的，系统能自动判断高度是正数还是负数; 2.该功能是存取单元格字体的快捷功能，以1.0.90.0版前的版本中，通常需要执行SetCellProp、SetFont多条js才能实现; 3.也适用于有别名的文本框对象; 4.如果 js 循环执行多遍时发现性能下降(界面很卡)，可以试试 SetRedrawAble 函数;
示例 | AF.func("setCellFont", "C6 \r\n size \r\n 26");

FindCell | 根据表达式查找单元格 |
参数 | 为标准的表达式串，表达式中可以包含如下变量: data - 表示输入的内容或计算结果 text - 单元格上实际显示的文字 formula - 输入的公式 alias - 别名 isProtected - 是否保护 textColor - 文字颜色 backColor 或 bgColor - 背景色, 'T'表示无背景色(即透明) droplistId - 下拉输入的字典Id droplistName - 下拉输入的字典名 isAbsRef - 公式中的单元格名是否绝对引用 其它变量名 - 表示自定义属性.
返回值 | 以逗号分隔的单元名，如"D3"、"K2,K4"
示例 | AF.func("FindCell", "left(formula,1)='='"); //取得所有输入了公式的单元格 AF.func("FindCell", "left(alias, 3)='mpc')); //取得别名以“mpc”开头的单元格 AF.func("FindCell", "isProtected=1 && price=33"); //自定义属性"price"为33、同时被设置了保护的单元格 AF.func("FindCell", "textColor='#ff0000' || bgColor=='T'"); //注：颜色常量, 必须按照例子中的写法，如'#FF0000'、'T'(表示透明背景)，不得使用 red、blue这些 AF.func("FindCell", "droplistName='省份'"); //用到'省份'字典的单元格

CloneArea | 克隆某个区域到一个新的区域 |
参数1 | 左上单元格行号(从0开始计数)
参数2 | 左上单元格列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 右下单元格行号(从0开始计数)
参数4 | 右下列号(从0开始计数)，或列名(如 A、K、AC)
参数5 | 格式为 : row=[?];col=[?], row、col至少要定义一个，含义为: row - 克隆到从该行开始的新区域，如果行不够，则自动向下扩展; col - 克隆到从该列开始的新区域，如果列不够，则自动向右扩展;
返回值 | 新区域的左上角、右下角单元格名，以冒号(:)分隔。如果是空串，则表示失败，失败原因通常是参数有错误、区域有交集
备注 | 1.也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名; 2.新、原区域不得有交集;
示例 | 如下函数是同一个意思： AF.func("CloneArea", "C6:F7 \r\n row=30"); AF.func("CloneArea", "C6 \r\n F7 \r\n row=30"); AF.func("CloneArea", "5 \r\n 2 \r\n 6 \r\n 5 \r\n row=30");

GetCellStatus | 取得某单元格的状态 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | A - 普通单元格; H - 被合并; M - 被合并，但位于合并区的左上角，是有效的主单元格; 空串 - 该单元格不存在
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)

GetMainCell | 取得某单元格所在的合并区域中的主单元格(即左上角单元格) |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 单元格名。如果本单元格没有被合并，则返回本单元格名
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)

GetMergedCells | 取得某单元格所在的合并区域 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 以“:”分隔的左上角和右下角的单元名。如果本单元格没有被合并，则返回本单元格名
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)

Merge | 合并单元格 |
参数1 | 左上单元格行号(从0开始计数)
参数2 | 左上单元格列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 右下单元格行号(从0开始计数)
参数4 | 右下列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | (无)
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
示例 | 如下函数是同一个意思： AF.func("Merge", "C6:F7"); AF.func("Merge", "C6 \r\n F7"); AF.func("Merge", "5 \r\n 2 \r\n 6 \r\n 5");

DeMerge(用法1) | 解除指定区域的合并 |
参数1 | 左上单元格行号(从0开始计数)
参数2 | 左上单元格列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 右下单元格行号(从0开始计数)
参数4 | 右下列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | (无)
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
示例 | 如下函数是同一个意思： AF.func("deMerge", "C6:F7"); AF.func("deMerge", "C6 \r\n F7"); AF.func("deMerge", "5 \r\n 2 \r\n 6 \r\n 5");

DeMerge(用法2) | 解除某个单元格所在区域的合并 |
参数1 | 单元格行号(从0开始计数)
参数2 | 单元格列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | (无)
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名; 也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
示例 | AF.func("deMerge", "C6");

MergeSame(用途1) | 合并某行给定范围内相同内容的单元格 |
参数 | 格式为：row=[?];col1=[?];col2=[?];isIgnoreNull=[?]，含义为： row - 某行的行号 col1 - 开始列号或类似A,B,C的列名，默认是0 col2 - 结束列号或类似A,B,C的列名，默认是次末列 isIgnoreNull - 内容为空是否就不合并了，true/false，默认是true isDemergeFirst - 合并前是否先解除覆盖了该范围的以前的合并，true/false，默认是true isKeepMergeAsPossible - 如果新的合并区横贯了以前的合并区，是否把以前的合并区拆分为二段，true/false，默认是false, 只有在isDemergeFirst=false时才能生效
返回值 | (无)

MergeSame(用途2) | 合并某列给定范围内相同内容的单元格 |
参数 | 格式为：col=[?];row1=[?];row2=[?];isIgnoreNull=[?];isDemergeFirst=[?]，含义为： col - 列号或类似A,B,C的列名 row1 - 开始行的行号，默认是0; 也可以是串“ds”, 表示仅合并数据源的填入行 row2 - 结束行的行号，默认是次末行; 也可以是串“ds”, 表示仅合并数据源的填入行 isIgnoreNull - 内容为空是否就不合并了，true/false，默认是true isDemergeFirst - 合并前是否先解除覆盖了该范围的以前的合并，true/false，默认是true isKeepMergeAsPossible - 如果新的合并区横贯了以前的合并区，是否把以前的合并区拆分为二段，true/false，默认是false, 只有在isDemergeFirst=false时才能生效
返回值 | (无)

MergeSame(用途3) | 多个列按大类、小类方式, 跨行合并相同内容的单元格 |

参数

格式为：col=[?];row1=[?];row2=[?];isIgnoreNull=[?];isDemergeFirst=[?]，含义为：
col - 多个列的列号或类似A,B,C的列名, 相互以逗号分隔
row1 - 开始行的行号，默认是0; 也可以是串“ds”, 表示仅合并数据源的填入行
row2 - 结束行的行号，默认是次末行; 也可以是串“ds”, 表示仅合并数据源的填入行
isIgnoreNull - 内容为空是否就不合并了，true/false，默认是true
isDemergeFirst - 合并前是否先解除覆盖了该范围的以前的合并，true/false，默认是true
isKeepMergeAsPossible - 如果新的合并区横贯了以前的合并区，是否把以前的合并区拆分为二段，true/false，默认是false, 只有在isDemergeFirst=false时才能生效

返回值 | (无)
示例 | AF.func("MergeSame", "col = A,C,D; row1=ds; row2=ds");

SplitCol | 将某列分拆成多列，并自动合并同类项，分拆、合并的算法和树列表的 VColSep 算法完全一致 |
参数 | 格式为：col=[?];row1=[?];row2=[?];VColSep=[?]，含义为： col - 列号或类似A,B,C的列名 row1 - 开始行的行号，默认是0 row2 - 结束行的行号，默认是次末行 VColSep - 分隔符，含义和树列表的 VColSep 一致
返回值 | (无)

GetValidCells | 取得某个区域内有效的单元格, 所谓“有效”是指不包括被合并的单元格 |
参数1 | 左上单元格行号(从0开始计数)
参数2 | 左上单元格列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 右下单元格行号(从0开始计数)
参数4 | 右下列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 以逗号分隔的单元格名
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名；
示例 | 如下函数是同一个意思： var s = AF.func("GetValidCells", "C6:F7"); var s = AF.func("GetValidCells", "C6 \r\n F7"); var s = AF.func("GetValidCells", "5 \r\n 2 \r\n 6 \r\n 5");

GetGraphics | 取得所有内嵌对象的别名 |
参数 | 可选，类型筛选，可以是如下类型的组合(逗号分隔)：Chart、Line、TextBox、Picture、Treelist, 分别表示统计图、线条、文本框、图片、树列表
返回值 | 别名串，多个别名之间以逗号分隔

GetCellProp(用途2) | 取得某内嵌对象的属性 |
参数1 | 内嵌对象的别名

参数2

属性名，不同的内嵌对象类型是有差别的，请参考XML文件，内嵌对象的属性有:
公共属性：
type - 内嵌对象类型，返回值为Chart、Line、Textbox、Picture;
isPrint - 打印　　　　　　　isProtected - 保护　　　　　rect - 矩形区的坐标
isLocked - 锁定行列位置　　　unDragAbleAtRuntime - 运行时不可拖拽
文本框的属性：
text - 文字或计算结果　　　　formula - 计算公式　　　　 fontIndex - 字体索引
bgColor - 背景色　　　　　　textColor - 文字色　　　　　align/valign - 文字对齐
dataType - 数据类型　　　　 isRound - 四舍五入　　　　　decimal - 小数位数
isThousandSeparat - 千位符　maskid - 显示掩码　　　　　rect - 矩形坐标
charSpace - 字间距　　　　　lineDistance - 行间距　　　 isUnderLine - 边框仅画底边
borderThick - 边框粗　　　　borderColor - 边框色　　　　borderStyle - 边框风格
RoundX/RoundY - 圆角直径　　isNoZoom - 尺寸和打印比例无关
ImageArrange - 以图片显示时的缩放模式
rightButton - 文本框右侧的图标的URL, 当鼠标划过时会显示, 鼠标点击时将触发Clicked事件
图片的属性：
isTransparent - 是否透明　　　blobid/picture - 图片　　　rect - 矩形坐标
borderThick - 边框粗　　　　 borderColor - 边框色　　　　borderStyle - 边框风格
RoundX/RoundY - 圆角直径 　　align/valign - 图片对齐　　isNoZoom - 尺寸和打印比例无关
统计图的属性:
ChartType、items、textContent...等近20项，请参考统计图组件的创建参数.
自定义属性:
不在上述范围内的属性就都算是自定义属性.

返回值 | 内容串
备注 | 上述矩形坐标 rect 的格式为逗号分隔的4个值: x1,y1,x2,y2

SetCellProp(用途2) | 设置某内嵌对象的属性 |
参数1 | 内嵌对象的别名, 如果所有对象一次性全部设置, 则可以用星号(*)表示
参数2 | 属性名, 同上面的GetCellProp( )函数的属性
参数3 | 值串
返回值 | (无)
备注 | 除了第一个参数必须为别名，其它方面请参见单元格的同名函数 SetCellProp(用途1) 示例

DeleteGraphics | 删除某些内嵌对象 |
参数 | 别名，如果要同时删除多个，请用逗号分隔
返回值 | (无)
备注 | 动态插入新的内嵌对象请用CallFunc函数

Chart_Refresh | 刷新统计图显示 |
参数 | 别名，如果要同时刷新多个，请用逗号分隔； 空串或星号(*)表示刷新所有统计图
返回值 | (无)

GetWorksheets | 取得工作表的个数 |
参数 | (无)
返回值 | 数字

GetCurrentWorksheet | 取得当前工作表序号 |
参数 | (无)
返回值 | 序号(从0开始计数)

SetCurrentWorksheet | 切换当前工作表 |
参数 | 序号(从0开始计数)，或工作表名称
返回值 | 1/0 - 成功/失败

GetWorksheetName | 取得工作表的名称 |
参数 | 序号(从0开始计数)
返回值 | 字符串

SetWorksheetName | 修改工作表的名称 |
参数1 | 序号(从0开始计数)，或工作表名称
参数2 | 新的名称
返回值 | 1/0 - 成功/失败

DeleteWorksheet | 删除工作表 |
参数 | 序号(从0开始计数)，或工作表名称
返回值 | 1/0 - 成功/失败

AppendWorksheet | 添加工作表：从外部报表导入 |
参数1 | 报表的URL (也支持是 Excel 文件)、或者是报表的XML大串

参数2

可选，格式为 isOpenDialog=[?];isWithDS=[?];sheetNum=[?];sheetName=[?];isWithFormula=[?], 其含义如下：
isWithDS - 是否连数据源一起导入, 默认是 true;
isOpenDialog - 如果外部报表有多个工作表，是否打开对话框选择, 默认是 false;
sheetNum - 逗号分隔的工作表序号, 例如 "0,3,5" 表示导入顺序号为0、3、4的工作表;
sheetName - 逗号分隔的工作表名, 例如 "利润表, 资产负债表";
isWithFormula - 是否导入计算公式, 仅用于导入 xlsx 或 xls 时, 默认是true;
备注：sheetNum 和 sheetName 只能选其一, 不能同时生效; 如果不指定 sheetNum 和 sheetName, 也不打开对话框, 那么将导入全部工作表.

返回值 | 1/0 - 成功/失败
示例 | AF.func("appendWorksheet", "../model1.xml \r\n isOpenDialog=true"); AF.func("appendWorksheet", "../model1.xlsx \r\n sheetname=工作簿3, 工作簿22; isWithFormula=false");

AddWorksheet | 添加工作表：新建空的工作表 |
参数 | 格式为：name=[?]; rows=[?];cols=[?]; rowheight=[?]; colwidth=[?], 含义如下： name - 工作表名; rows/cols - 总行数/列数，默认是100/20; rowheight/colwidth - 行高/列宽, 默认是24/140
返回值 | 1/0 - 成功/失败
示例 | AF.func("addWorksheet", "name=薪资;rows=5;cols=10");

ExchangeWorkSheet | 工作表交换位置 |
参数1 | 工作表1的序号(从0开始计数)，或工作表名称
参数2 | 工作表2的序号(从0开始计数)，或工作表名称， 如果为 -1, 表示将工作表1移到最末尾
返回值 | 1/0 - 成功/失败
示例 | AF.func("ExchangeWorksheet", "1 \r\n 3");

GetWorksheetNameOfDS | 取得某数据源指定用于某些工作表的名称 |
参数 | 数据源ID
返回值 | 逗号分隔的工作表名
备注 | 指定数据源用于某些工作表的功能，在数据源首个对话框中

HideWorkSheet | 工作表解除隐藏(即恢复显示) |
参数 | 可选, 无参数表示隐藏当前工作表, 如果有参数, 那么格式为 sheetName=[?];sheetNum=[?], 含义如下: sheetName - 工作表名, 如果要一次性隐藏多个工作表, 工作表名之间以逗号分隔 sheetNum - 工作表序号(从0开始计数), 如果要一次性隐藏多个工作表, 序号之间以逗号分隔
返回值 | 1/0 - 成功失败
备注 | 1.隐藏标记是保存在报表的XML中的; 2.参数 sheetName 和 sheetNum 只能二选一
示例 | AF.func("HideWorkSheet", "0,3");

UnhideWorkSheet | 工作表解除隐藏(即恢复显示) |
参数 | 工作表名, 如果要一次性恢复多个工作表, 请以逗号分隔各个工作表名; 空串表示恢复全部工作表
参数 | 可选, 格式为 locate = [?], 含义如下: locate - 恢复后将当前工作表切换到哪里, 可以是如下几种, 默认是 current: current - 保持不变; first - 切换到第一个被恢复的工作表; 工作表名 - 切换到某个表名的工作表;
返回值 | 1/0 - 成功失败
示例 | AF.func("UnhideWorkSheet", "\r\n locate=first");

GetHideWorkSheet | 取得所有隐藏的工作表的表名 |
返回值 | 逗号分隔的隐藏工作表的表名
备注 | 隐藏标记是保存在报表的XML中的

SetProp(用途1) | 设置工作表的某些属性 |

参数

格式为 "item1=value1;item2=value2;..." 的属性串，属性含义及可用值如下：
注：“”图标表示该属性能随报表保存(即报表XML中有该属性), “”则为临时属性，和XML无关.
isRefOriPrecision - true/false, 单元格之间的引用计算是否以原始精度为准;
isShowZero - true/false, 计算结果为零时，是否显示0.00;
isUsingEditMask - true/false, 是否启用单元格的数据类型校验;
isForGraphicObjectsOnly - true/false, 是否以画文本框、线条等为主，不需要表格线;
isRowHeightAutoExtendAble - true/false, 是否允许自动调整行高;
isRowHeightAutoExtendAfterRefreshed - true/false, 从数据源加载数据后，是否立即自动调整行高;
isDefaultPrint - true/false, 本工作表是否默认打印;
LineDistance - 像素数, 行距;
AutoBreakLine - 0至3的数字, 文字超宽处理，0:自动换行、缩小字体，换行优先; 1:不处理; 2: 自动缩小字体、换行，缩小字体优先; 3: 自动换行，但不缩小字体;
Ellipsis - 0:不显示省略号；1:显示省略号;
BackColor - 背景色;
BackPicture 或 BackImage - 背景图, 为一 URL， 空串表示清除背景图;
isTile - true/false, 背景图的布局，分别表示铺满/单幅;
alpha - 0到255的数字, 背景图的透明度，数字越小则越淡;
rotate - 0到正负360的数字, 背景图的顺时针旋转角度，负数表示逆时针;
SectionDefine - 串, 数据源数据按主键分拆的规则，请参见报表 xml 文件中的; <Properties>\<Other>中的同名属性 ;
此外，也可以通过本函数更改某些独立于当前工作表(即对所有工作表都生效)的属性：
WorkMode - 工作方式，请参见插件创建参数中的同名属性;
Ruler - 显示或隐藏标尺，值为Horz/Vert，分别表示水平/垂直标尺，也可以是空串，或逗号分隔的组合;
LeftRulerWidthPercent - 左标尺的宽度比例，0至500之间的数字, 含义是百分比;
toolbarVisible - 显示/隐藏工具条，值为true/false;
PagesTabPercent - 底部滑动条的左侧Tab区长度占总宽度的百分比，0到100, 含义是百分比;
PreviewWindow - 打印预览窗口的位置 (含义请详见"1.创建实例");
PreviewButton - 打印预览窗口中的4个按钮(含义请详见"1.创建实例");
PreviewButtonEnable - 打印预览窗口中的4个按钮的状态(含义请详见"1.创建实例");
isAutoCalculateWhenOpen - 报表打开时是否立即自动计算，值为true/false;
isSaveCalculateResult - 报表保存时，是否连同数据源填入的数据一起保存，值为true/false;
isSheetDragAble - true/false, 底部的工作表页签是否允许被鼠标拖拽交换位置;
UserDefinePropUIStyle - 单元格的自定义属性, 在工具箱中的展现方式，0-不展现; 1-仅展现; 2-允许被修改;
上述有些属性是“创建参数”.

返回值 | (无)

GetProp(用途1) | 取得工作表的某些属性 |
参数 | 属性名，参见函数SetProp( ). 此外，参数 Crosstab 表示取得交叉表的XML串.
返回值 | 属性的值

GetProp(用途2) | 取得工作表的交叉表、分类汇总配置XML |
参数 | 固定的串，为 crosstab 或 summary, 分别表示交叉表、分类汇总表
返回值 | XML串
备注 | XML串较复杂，需要您对报表的XML文件中的 Crosstabs、Summaries 节点进行分析

SetProp(用途2) | 设置工作表的交叉表、分类汇总配置XML |
参数1 | 固定的串，为 crosstab 或 summary, 分别表示交叉表、分类汇总表
参数2 | XML串
返回值 | (无)
备注 | XML串较复杂，需要您对报表的XML文件中的 Crosstabs、Summaries 节点进行分析

GetMemo | 取得某自由存储区的存储串 |
参数1 | 工作表顺序号(从0开始计数)，如果为空串，则表示是和工作表无关的的独立存储区
参数2 | 存储区的ID，为任意串，但不得含逗号
返回值 | 串
备注 | 自由存储区的内容是保存在报表的XML中的

SetMemo | 设置某自由存储区的存储串 |
参数1 | 工作表顺序号(从0开始计数)，如果为空串，则表示是和工作表无关的的独立存储区
参数2 | 存储区的ID，为任意串，但不得含逗号
参数3 | 要储存的任意串，空串表示删除该存储区
返回值 | (无)
备注 | 1.自由存储区的内容是保存在报表的XML中的; 2.书写 js 时请注意: 不要在参数2和参数3之间留有多余空格，否则空格也会保存到XML中去的

GetMemos | 取得自由存储区的所有ID |
参数 | 工作表顺序号(从0开始计数)，如果为空串，则表示是和工作表无关的的独立存储区
返回值 | 逗号分隔的存储区ID号
备注 | 自由存储区的内容是保存在报表的XML中的

Print | 打印 |

参数

可选，格式为 isOpenSysDialog=[?]; WorkSheet=[?], 其含义和用法如下:
isOpenSysDialog - true/false - 是否弹出操作系统的打印对话框, 默认是true。如果报表绑定了打印机(即打印配置对话框中的 “认定使用这台打印机” 选项被勾上), 本参数无效, 即不会弹出操作系统对话框的;
WorkSheet - 工作表， 可以是如下几种:
OpenDialog - 弹出对话框选择打印(如果多个工作表);
All - 打印全部工作表;
Default - 打印在 “属性” 对话框中勾选了 “默认打印本工作表” 的所有工作表;
Current - 打印当前工作表;
以逗号分隔的工作表名或工作表顺序号 - 打印指定的工作表;
关于 WorkSheet 的默认值，如果是 Firefox 浏览器，默认值是 "All"; 否则普通报表是 "OpenDialog"、设成无缝打印的报表是"All"：

返回值 | 1/0 - 成功/失败
备注 | 1.如果当前是在批打印中 (即在 BeginBatchPrint( ) 的循环中)， 上述参数无效; 2.如果当前是在函数 OpenPrintDialog 触发的事件中, 上述参数无效; 3.Firefox 浏览器的 WorkSheet 不能是 OpenDialog, 否则会因为对话框阻塞主线程而卡死，但 Firefox 对 isOpenSysDoalog 的操作系统对话框并无影响;
示例 | AF.func("Print", "isOpenSysDialog=false; WorkSheet=all"); AF.func("Print", "WorkSheet=汇总表, 资金表");

BeginBatchPrint | 开始批打印 |
参数 | 可选，格式为 StartPageNum=[?]; isMultiPrintTask=[?]; isShareBlankPart=[?]; isPreview=[?]; isOpenSysDialog=[?], 其含义如下: StartPageNum 或 StartPageNumber- 批中起始页码(任务中的总页码)， 默认是1; isShareBlankPart - 如果是名片式打印(即每张纸能均分成多块的打印)，是否共享前一张纸的空白部分，以节省打印纸，默认是false; isPreview - 是否用于预览，默认是false。如果 isPreview=false, 则还可以有如下2个选项; isMultiPrintTask - 是否按奇偶页拆分成2个打印任务打印， 默认是false; isOpenSysDialog - 打印前是否弹出操作系统的打印对话框, 默认是true;
返回值 | (无)
备注 | 1.批打印常用于同一个模板、多批数据的集中打印; 2.在批中也允许多个模板的打印(通过 Build 切换模板)，但请尽量使用相同的打印配置参数，否则有可能会导致失败; 3.从调用该函数开始，后面调用Print( )函数打印的都归并在单个任务中，直至调用EndBatchPrint( )才将这个任务送往打印机，所以打印速度较快; 4.如果分奇偶页打印，打印任务自动分拆成2个：奇页任务和偶页任务，调用EndBatchPrint( )后，将先打印奇页，软件会弹出对话框“正在打印奇数页，按'是'将开始打印偶数页...”，待用户换好纸张即打印偶页; 5.如果您希望在报表中能打印出在批中的页码，请在报表的表达式中使用 pageBatch( )计算函数;
示例 | AF.func("Build", "reports/aax.xml"); //打开模板 AF.func("BeginBatchPrint", "isShareBlankPart=true"); //开始批打印 for( ... ) { //通常是循环 AF.func("SetSource", "ds1 \r\n abc.aspx?mon=" + mon); //设置查询取数条件 AF.func("Calc", ""); //填充数据 AF.func("Print", ""); //在批中，该函数并没有实际的打印动作，并且也不需要参数，但该步骤必不可少 } AF.func("EndBatchPrint", ""); //终止批打印：把打印任务送往打印机，此时才真正打印

EndBatchPrint | 结束批打印，将打印任务发送给打印机 |
参数 | (无)
返回值 | (无)

GetProp(用途3) | 取得工作表的打印配置属性 |
参数 | 固定的串，为 Print 或 Printer
返回值 | XML串
备注 | 1.打印属性比较复杂，需要您对报表的XML文件中的 PrintPage 节点进行分析; 2.返回的XML串内容不多，因为默认的设置就不出现在XML中了; 3.PaperNumber是打印纸号，请参考本文档“附录4.打印纸对照表”

SetProp(用途3) | 设置工作表的打印配置属性 |
参数1 | 固定的串，为 Print 或 Printer
参数2 | XML串
返回值 | (无)
备注 | 更改打印参数，需要借助全局函数中的DOM函数集
示例 | //如下例子是把打印纸的左边界修改为10毫米： var xml=AF.func("GetProp", "Print"); var hDOM = AF.func("dom_new", xml); //创建DOM对象 var hMargin = AF.func("dom_find", hDOM + "\r\n margin"); //查找节点 AF.func("dom_SetProp", hMargin + "\r\n left \r\n 10"); //设置 xml = AF.func("dom_export", hDOM); //输出xml AF.func("SetProp", "Print \r\n" + xml); //完成 AF.func("dom_delete", hDOM); //销毁对象

GetPrintProp | 取得工作表的某些常用的打印配置属性 |

参数

属性名, 可用的属性及返回值列举如下:
Printer - 打印机名;
PaperNumber - 打印纸号, 纸号请参考本文档“附录4.打印纸对照表”;
Oriantation - 纸的方向, 返回值 Portrait/Landscape 分别表示垂直/横向走纸;
Scale - 打印的缩放比例, 10到400之间的纯数字;
AutoScale - 自动缩放, 空串(或false)/NoEnlarge/AutoFit 分别表示不自动缩放/自动缩小但不放大/自动缩放使打印纸满幅显示;
Copies - 打印份数, 大于0的纯数字;
Margin - 纸的边距, 逗号分隔的左上右下, 单位为毫米;
Duplex - 支持双面打印的打印机, 双面打印模式, 空串(或false)/Simplex/Vertical/Horizontal 分别表示 仍然以单面打印/简单的双面打印/用于垂直翻页的双面打印/用于横向翻页的双面打印;
isPrintBothSide - 打印奇偶页时是否交换左右边距, true/false;
PrintColor - 彩色打印方式, Device/BW 分别表示采用打印设备所具备的色彩能力打印/强制黑白打印;

返回值 | 属性的值
备注 | 本函数是出于使用方便的目的，列举了最常用的属性项，其它属性还是要通过 GetProp(用途3) 去获取的

SetPrintProp | 设置工作表的某些常用的打印配置属性 |
参数 | 分号分隔的名-值对, 可用属性名请看前面的 GetPrintProp 函数。 例如: Printer=HP JetColor; paperNumber=9; Oriantation=landscape
返回值 | (无)
备注 | 本函数是出于使用方便的目的，列举了最常用的属性项，其它属性还是要通过 SetProp(用途3) 去更改的

GetPrintPages | 取得打印的总页数 |
参数 | (无)
返回值 | 数字
备注 | 预估当前工作表如果需要打印，需要多少页纸

SetPrintPage | 指定下次打印时，具体打印哪些页 |
参数 | 逗号分隔的页号, 页号从1开始计数，也可以以减号(-)分隔起止页
返回值 | (无)
备注 | 该设置是一次性的，打印完就会自动清除
示例 | AF.func("SetPrintPage", "5,9,24-26");

SetPrintAbreast | 设置并肩打印, 即2个工作表打印在一张纸上，横向共享打印纸 |
参数 | 逗号分隔的工作表名(或工作表顺序号)
返回值 | (无)
备注 | 打印的左右间距, 采用的是第二个工作表的左边距
示例 | AF.func("SetPrintAbreast", "0,1"); //第一、二个工作表从左到右共享打印纸

SetItemLibraryURL | 设定指标库的URL，用于上报模式的设计时(运行时通常不需要执行) |
参数 | URL, 或XML串，其格式请参见Report文档
返回值 | (无)

SetItemAttr | 动态修改指标的属性的值 |
参数1 | 诸如 "attr1=value1; attr2=value2; attr3=value3"这样的名-值对.
参数2 | 可选，别名(即指标名)，表示范围仅限于该类指标; 如果为空，表示对所有单元格、凡是含这些属性的值统一设置.
返回值 | 被修改的单元格个数

GetUploadXML | 用于报表的汇总上报模式(WorkMode=UploadRuntime)，取得当前填入内容的XML串 |

参数

可选，格式为 isCurrent=[?];isIncludeCellName=[?];isIncludeDispText=[?];includeAlias=[?];excludeAlias=[?], 含义如下:
isCurrent - 当报表有多个TabOrder方案时，是否仅上报当前方案, 默认true
isIncludeCellName - 生成的数据中是否包含单元格名, 默认true
isIncludeDispText - 生成的数据中是否包含 DispText 属性内容, 默认true (属性 "DispText" 请参见 GetCellProp 函数);
isIncludeHRef - 生成的数据中是否包含单元格的 HRef 属性内容, 即超链接内容, 默认true;
isIncludeCheckboxText - 单元格如果是 Checkbox,是否连同右侧的文字也一起提交, 如果一起提交，那么该指标的内容将以 "|" 分隔 checkbox 的值和右侧的文字，例如 "1|男"，左边肯定是 0 或 1。本选项默认false;
includeAlias - 仅上报某些别名(即指标),多个别名之间以逗号分隔, 也允许到星号(*)通配符;
excludeAlias - 排除上报某些别名(即指标),多个别名之间以逗号分隔, 也允许到星号(*)通配符;
isChangedOnly - 仅上报被改动过的单元格的内容, 确切地说, 是指上次调用 ResetChanged 函数到现在, 期间有改动的单元格;
format - 返回的XML串的格式, normal - 普通的XML格式(默认), simpleXML - 最简单、无属性的XML格式(不支持内嵌表格);

返回值 | XML串, 如果返回 "0"，表示报表中的内嵌Treelist对象未通过验证
备注 | 1.仅用于创建参数为WorkMode=UploadRuntime时; 2.参数 includeAlias 和 excludeAlias 不能同时使用
示例 | AF.func("getUploadXML", "includeAlias=MPS1, MPS2, KKS*, KKD*; isIncludeCellName=false");

SetUploadXML | 加载已上报的数据，用于报表的显示 |
参数1 | URL, 或XML串，其格式须和GetUploadXML( )返回的XML一致 (但不需要 Cell="?" 内容)
参数2 | 可选，格式为 autoCalc=[?];format=[?], 含义如下: autoCalc - 执行完加载后是否立即自动执行一遍计算, 可以为 asynch/synch/none, 分别表示 异步计算/同步计算/不需要计算, 默认是asynch; format - 加载的数据格式, 须和 GetUploadXML 的同名参数一致
返回值 | (无)
示例 | AF.func("setUploadXML", "../getxml.do?id=332 \r\n autoCalc=none");

GetUploadIndex | 取得当前采用了多个TabOrder方案中的哪一个，用于上报运行时 |
参数 | (无)
返回值 | 顺序号，从0开始计数

SetUploadIndex | 指定采用多个TabOrder方案中的某一个，用于上报运行时 |
参数 | 顺序号，从0开始计数
返回值 | (无)

GetUploadNames | 取得所有TabOrder方案的名称 |
参数 | (无)
返回值 | 以回车分隔的串。如果只有单个方案，返回串有可能是空串

GetUploadCells | 取得有TabOrder的单元名 |
参数 | 可选，方案的顺序号, 空串或-1表示当前方案，默认是空串
返回值 | 以逗号分隔的单元名(如果有文本框，则为文本框的别名)串

SelectCell(用途2) | 用于上报运行时，直接打开第一个可输入的单元格的输入框 |
参数 | (无)
返回值 | (无)

RebuildTabOrder | 重新整理、刷新所有 Taborder |
参数 | (无)
返回值 | (无)
备注 | 通常用于个别单元格的 TabOrder 被外部函数更改过以后

ResetChanged | 合并修改内容，为以后调用 GetChangedCells( ) 作准备. |
参数 | 可选，格式为 range=[?], 其含义为: range - 工作表范围，值可以为： full - 表示全部工作表，默认; current - 仅当前工作表；
返回值 | (无)

GetChangedCells | 取得所有被修改过的单元格. |
参数 | (无)
返回值 | 以逗号分隔的单元名
备注 | 必须在之前执行过 ResetChanged( ) 函数才能生效.

CollectXML | 获取某些单元格的公式、内容 |
参数 | 需要获取的单元格的条件，条件为范围、背景色或别名，格式为 Range=[?];BackColor=[?];alias=[?], 解释如下： Range - 单元格范围, 比如 "A1:D4", 默认是整个工作表; BackColor - 背景色, 比如 "#00ff00", 如果不指定，表示不作为条件; alias - 别名, 允许包含星号(*), 其含义是通配符. 注: BackColor 和 alias 是 “或” 的关系; 而 Range 和它们是 “与” 的关系.
返回值 | XML串
示例 | //取得所有单元格中, 红色背景色的单元格数据 AF.func("CollectXML", "BackColor=red"); //取得 D3:Z111 范围内, 红色背景色的单元格数据 AF.func("CollectXML", "Range=D3:Z111; BackColor=red"); //取得 D3:Z111 范围内，所有单元格的数据 AF.func("CollectXML", "Range=D3:Z111");

GetChangedXML | 取得数据源填充区内容的XML串 |

参数

可选, 可以有如下的选项，相互以分号分隔：
ds - 数据源ID, 表示取得该数据源的 "=datarow( )" 函数所在单元格的数据源填充区内容;
cell - 单元格的别名，表示该单元格肯定包含 "=datarow( )" 的函数，并取得数据源填充区内容;
备注：ds 和 cell 不能同时使用，否则优先采用 ds.
DateFormat - 日期的格式，默认是'%Y.%m.%d'，可参见公共内容中now( )函数的参数;
DateTimeFormat - 日期时间的格式，默认是'%Y.%m.%d %H:%M:%S'，可参见公共内容中now( )函数;的参数
includeCol / excludeCol - 仅包含某些列/不包含某些列，二者可选其一，表示列的范围. 列名之间以逗号分隔。默认是空串，表示提交所有列;
备注：这个“列名”是指数据源中的列名.
自定义属性 - 任意属性串，将附加到XML根节点处

返回值 | XML大串 - 成功; 空串 - 未发现数据源;
备注 | 1.通常需要在 WorkMode=InputDSRunTime 工作模式下使用，如果不在这个模式下，结果有可能会不正确; 2.在 InputDSRunTime 工作模式下，只要指定 ds 参数就行, 不建议使用 Cell 参数; 如果报表只有一个 "=datarow( )" 函数， ds参数都可以省略; 3.在其它工作模式下, 取数范围是以含 "=datarow( )" 函数单元格作为左上角的数据源填充区;
示例 | //取得当前工作表中唯一的数据源填充区内容 AF.func("GetChangedXML", ""); //取得当前工作表中 'ds1' 数据源填充区内容 AF.func("GetChangedXML", "ds=ds1"); //同上，但XML串含附加信息 AF.func("GetChangedXML", "ds=ds1; org=1001;Uid=330102");

Swkrntpomzqa | 限制某些交互功能 (也可写作 SetLimit ) |
参数 | 可包含如下、以逗号分隔的串: 1 －公式修改权 2 －非公式的修改权 3 －内容复制权 4 －格式修改权(如行高列宽、字体、对齐、隐藏等)，也可分拆成: 4a － 行高列宽调整权 4b － 行列隐藏权 4c － 行列取消隐藏权 4d － 除行高列宽、行列隐藏、取消隐藏外的其它格式调整权 8 －行列增删权, 也可拆分成： 256 －行增删权 512 －列增删权 16－被保护的单元的内容修改权 32－平衡校验修改权 64－数据源修改权，也可拆分成： 64a －新建数据源权 64d －删除数据源权 64m －修改数据源权 128－工作表的增删权
返回值 | (无)
备注 | 1.在上报模式的运行时(workMode=UploadRunTime)，不完全遵照这个限制; 2.权限仅限制交互操作，不限制API调用; 3.权限是不写入报表 XML 中的，不会随报表保存; 4.本函数对所有工作表都生效;
示例 | AF.func("Swkrntpomzqa", "1, 2"); //所有单元格内容不得修改 AF.func("Swkrntpomzqa", "1, 16, 512"); //公式不得修改、被保护的单元格不得修改、列不得增删

addEditAbleOnly | 添加可编辑的单元格范围，除了这些单元格，其它单元格都不得修改 |

参数

可包含如下格式的串: level=[?]; [cell=?]; [cellArea=?]; [fixedCell=?]; [fixedCellArea=?]; [alias=?]; [aliasArea=?]; [bgColor=?]; [droplist]; [checkbox], 含义即语法如下:
level － top/normal, "top" 表示独立增加权限，且级别最高，不受其它权限函数影响, 默认是normal;
cell － 单元格名(有多个则以逗号分隔)，如"A5, B4, D4";
fixedCell － 同上，但位置是固定的，不受行列增删影响;
cellArea － 以":"分隔的2个单元格名，表示左上角到右下角的矩形区域，如“B2:D5”;
fixedCellArea － 同上，但位置是固定的，不受行列增删影响;
alias － 别名(有多个则以逗号分隔)，可以含 * 的通配符;
aliasArea － 以":"分隔的2个别名，表示左上角到右下角的矩形区域，如“Tag12:Tag33”;
bgColor － 某种背景色的单元格(多个背景色之间以逗号分隔), 如“red, blud, #334400”，T 表示无背景色(透明);
droplist － 凡是下拉的单元格;
checkbox － 凡是Checkbox的单元格;
arrow － 左侧标记色，多个颜色之间以逗号分隔;

返回值 | (无)
备注 | 1.设置的权限不会写入报表XML, 并且只对当前工作表生效; 2.当 level = normal 时: 1.独立于 Swkrntpomzqa( )，但和 Swkrntpomzqa( ) 同时生效，语义上有冲突时Swkrntpomzqa( )优先; 2.和 AddUnEditAbleOnly( )函数是互斥的，即调用AddUnEditAbleOnly( )函数后以前的设置将失效. 3.只能执行一遍， 如果再次执行，以前的 level=normal 的设置将失效. 3.当 level = top 时: 1.等级高于 Swkrntpomzqa( )； 2.允许执行多遍，设置的权限都将被保持，和其它 AddEditAbleOnly( ) / AddUnEditAbleOnly( )函数不互斥，等级仍然保持最高.
示例 | AF.func("addEditAbleOnly", "cellArea=B3:B5, D3:D5; alias=KK*"); //仅如下范围的单元格可以编辑: B3:B5之间的单元格、 D3:D5之间的单元格、或别名以"KK"开头的单元格 AF.func("addEditAbleOnly", "droplist; checkbox; bgColor=black"); //除了下拉的、Checkbox的、或黑色背景的单元格可编辑，其它单元格都不可编辑

addUnEditAbleOnly | 添加不可编辑的单元格范围，除了这些单元格不可修改，其它单元格都是可以修改的 |
参数 | 同AddEditAbleOnly函数
返回值 | (无)
备注 | 同AddEditAbleOnly函数

ClearLimit | 清理上面2个函数 (addEditAbleOnly, addUnEditAbleOnly) 设置的权限 |
参数 | 无
返回值 | (无)
备注 | 1.不影响 Swkrntpomzqa 函数设置的权限; 2.只对当前工作表生效

GetCellEditAble | 判断某单元是否有编辑权限 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | 1/0 - 有/无
备注 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)
示例 | var isAble = AF.func("getCellEditAble", "3 \r\n 9"); var isAble = AF.func("getCellEditAble", "B7"); var isAble = AF.func("getCellEditAble", "MyTh"); //"MyTh"是别名

AddUserFunctions | 添加自定义函数的声明 |
参数 | XML文档，或XML大串。参数为空表示清除所有自定义函数
返回值 | (无)

RemoveUserFunctions | 清除自定义函数 |
参数 | (无)
返回值 | 1/0 - 已清除/未发现自定义函数

SetBatchFunctionURL | 指定批处理自定义函数的URL地址 |
参数1 | URL，绝对或相对
参数2 | 可选，格式例如： "Functions=500;TimeOut=999", 其中 Functions 表示每一批中最多函数个数，默认100， TimeOut 表示 http 请求响应的超时，单位是秒
参数3 | 可选，附加参数，为任意格式的字符串，最终该串将附在发送的XML串中，供后端程序使用
返回值 | (无)
备注1 | 参数为空表示清除该地址
备注2 | 关于选项 Functions, 表示每批最多函数数量的限制，但它不代表每一批都能达到这个数量，实际上每一批的函数数量是和包含自定义函数的单元格总数有关, 假如您一共有　100　个单元格, 单元格公式都是这种： =myfunc1( ) + myfunc2( ) + myfunc3( ) 报表控件内部的计算逻辑处理程序，将会把函数分成 3 批提交、每批中含有 100 个函数, 哪怕你将 Functions 设成 100000, 每批中也只能含 100 个函数.
示例 | AF.func("SetBatchFunctionURL", "inne/procf.aspx \r\n functions=50;timeout=9999 \r\n user=normal");

SetAutoCalc | 在键盘输入过程中、复制粘帖过程中，通常能触发自动计算，但如果报表太大（公式太多）、某些函数运行速度太慢的话，自动计算会影响性能，影响到操作的流畅程度，为此可以按条件设定，是否自动关闭这个自动计算功能。 |
参数 | 格式为 maxCells=[?];UserFunction=[?];RefOtherReport=[?]，均为可选，含义如下: maxCells - 公式单元格数量阀值，一旦公式单元格总数超过这个数目，就不触发自动计算, 0 相当于彻底关闭自动计算. 系统内部初始数值是10000(1万); UserFunction - 自定义函数是否允许被触发， 0/1 (或true/false). 系统内部初始值是true; RefOtherReport - 引用其它工作表的函数(ref)是否允许被触发0/1 (或true/false). 系统内部初始值是true
返回值 | (无)
备注 | 1.自动计算选项是一个全局开关，对整个进程都生效的; 2.本函数仅影响键盘动作导致的自动计算，对显式调用计算函数、对工具栏的计算按钮等并无影响
示例 | AF.func("SetAutoCalc", "userfunction=false"); //表示仅关闭自定义函数的自动计算

GetAutoCalc | 取得自动计算选项，请参见 SetAutoCalc 函数 |
参数 | 可以为: maxCells - 自动计算的公式单元格数量阀值, 返回值是数量 UserFunction - 自定义函数是否允许被触发, 返回值是 1 或 0, 1表示允许 RefOtherReport - 引用其它工作表的函数(ref)是否允许被触发, 返回值是 1 或 0, 1表示允许
返回值 | 和参数有关. 如果参数为空，则返回值可能是诸如 "maxCells=1000;UserFunction=1;RefOtherReport=0" 这样的串
示例 | var cells = AF.func("GetAutoCalc", "maxCells");

GetLastCalcError | 取得上次计算错误信息 (即计算信息框中的提示内容)、或未通过数据验证的Validation的ID号 |
参数 | Validation - 表示取上次未通过数据验证的Validation的ID，多个ID之间以逗号分隔； 其它串 - 上次普通的错误提示
返回值 | 串

SetHoldDSData | 在计算后, 设置数据源是否仍然保持数据 |
参数 | true/false
返回值 | (无)
备注 | 1.在默认情况下，在每次完成计算后，数据源是不再保持自身数据的，以释放内存; 2.如果你希望在 js 中直接读取数据源中的数据，则应该将其设为 true，请参见下例; 3.如果你不执行AF.func("SetHoldDSData", "true")， 你会发现 AF.func("data", "ds1 \r\n 1 \r\n 1") 依然能取得数据，事实上它是再次访问后端数据源的，效率较低; 4.如果报表的公式中包含了 search( ) 函数，那么在计算过程中系统将会自动执行本函数；
示例 | AF.func("Build", "../report/report33.xml"); AF.func("SetHoldDSData", "true"); AF.func("Calc", ""); //如下 "data" 函数能直读数据源中的数据，请参见全局函数中的 “5.对表达式和计算函数的封装” var s = AF.func("data", "ds1 \r\n 1 \r\n 1");

GetHoldDSData | 在计算后, 数据源是否仍然保持数据 |
参数 | (无)
返回值 | 1 / 0 - 是/否

Chart_DeleteAllSeries | 清除所有系列 |
参数 | 统计图别名
返回值 | (无)

Chart_GetSeriesCount | 取得系列数 |
参数 | 统计图别名
返回值 | 数字

Chart_GetSeriesName | 取得某系列的名称 |
参数1 | 统计图别名
参数2 | 顺序号，从0开始计数
返回值 | 串，空串表示已经到达末尾

Chart_SetSeriesName | 系列的增删改操作 |
参数1 | 统计图别名
参数2 | 顺序号，从0开始计数
参数3 | 系列名. 空串表示删除这个系列；如果不存在则添加；如果已经存在则修改系列名
返回值 | (无)

Chart_GetItemNames | 取得所有数据项的名称 |
参数 | 统计图别名
返回值 | 以逗号分隔的数据项名

Chart_GetItemName | 取得某数据项的名称 |
参数1 | 统计图别名
参数2 | 顺序号，从0开始计数
返回值 | 数据项名

Chart_SetItemNames | 设置全部数据项的名称 |
参数1 | 统计图别名
参数2 | 以逗号分隔的数据项名
参数3 | 可选，true/false - 重构统计图/不重构，默认是true
返回值 | (无)

Chart_SetItemName | 设置某个数据项的名称 |
参数1 | 统计图别名
参数2 | 顺序号，从0开始计数
参数3 | 数据项名
参数4 | 可选，true/false - 重构统计图/不重构，默认是true
返回值 | (无)

Chart_GetValues | 取得某系列的全部数值 |
参数1 | 统计图别名
参数2 | 系列名，或系列的顺序号. 如果只有一个系列，那么可以是空串或任意串
返回值 | 以逗号分隔的值

Chart_GetValue | 取得某系列的某个数值 |
参数1 | 统计图别名
参数2 | 系列名，或系列的顺序号. 如果只有一个系列，那么可以是空串或任意串
参数3 | 数据项的顺序号，或数据项名
返回值 | 值

Chart_SetValues | 设置某系列的全部数值 |
参数1 | 统计图别名
参数2 | 系列名，或系列的顺序号. 如果只有一个系列，那么可以是空串或任意串
参数3 | 以逗号分隔的值, 值可以是数值、单元名、别名
参数4 | 可选，true/false - 重构统计图/不重构，默认是true
返回值 | (无)

Chart_SetValue | 设置某系列的某个数值 |
参数1 | 统计图别名
参数2 | 系列名，或系列的顺序号. 如果只有一个系列，那么可以是空串或任意串
参数3 | 数据项的顺序号，或数据项名
参数4 | 值, 值可以是数值、单元名、别名
参数5 | 可选，true/false - 重构统计图/不重构, 默认是true
返回值 | (无)

Droplists_Get | 取得所有下拉字典 |
参数 | name 或 id, 表示返回字典名 或 字典的id号
返回值 | 以逗号分隔的串

Droplists_GetHandle | 取得某个下拉字典的句柄 |
参数 | 字典名 或 字典的id号
返回值 | 句柄串，空串表示该字典不存在
备注 | 取得看句柄后，可以使用全局函数中的 “下拉List管理函数” 访问字典数据

Droplists_FindCells | 取得当前工作表中使用了某个下拉字典的所有单元格 |
参数 | 字典名 或 字典的id号
返回值 | 以逗号分隔的单元格名

Droplists_Delete | 删除某个下拉字典 |
参数1 | 字典名 或 字典的id号
参数2 | 可选，true-绝对删除, false - 如果有单元格使用了该字典就不删除, 默认是true
返回值 | 1/0 - 成功/失败

Droplists_Add | 动态添加下拉字典 |
参数 | 语法串
返回值 | 新增字典的id号, 0表示失败，失败原因可能为name重复
示例 | AF.func("Droplists_Add", "name=kk1;dataURL=../getDict.aspx"); AF.func("Droplists_Add", "name=kk2;dataURL=<items><item key=1>男</item><item key=2>女</item></items>"); AF.func("Droplists_Add", "name=kk3;treelistURL=customer.xml; DataCol=id; DisplayCol=name");

Masks_Get | 取得所有显示掩码的id |
参数 | (无)
返回值 | 掩码的id，相互以逗号分隔

Mask_Get | 取得某个显示掩码的表达式 |
参数 | ID号
返回值 | 表达式

Mask_Delete | 删除某个显示掩码 |
参数 | ID号
返回值 | 1/0 - 成功/失败

Mask_Add | 添加一个显示掩码 |
参数1 | 数据类型，可以是 string, int, double, date, datetime
参数2 | 表达式
返回值 | ID号
备注 | 如果该掩码表达式已经存在，则返回原ID号
示例 | var id = AF.func("Mask_Add", "string \r\n =formatNum(data, '￥#,##0.00')"); var id = AF.func("Mask_Add", "string \r\n =picture()"); //添加图片显示掩码 var id = AF.func("Mask_Add", "string \r\n =barcode(33,0,0,0)"); //添加二维码显示掩码

Mask_FindCells | 取得当前工作表中使用了某个显示掩码的单元格 |
参数 | ID号
返回值 | 以逗号分隔的单元格名、或文本框的别名

SetToolbarItemImage | 动态更改工具条中某按钮的图标 |
参数1 | 功能号
参数2 | 图标文件的URL，如果是相对路径，则相对于当前页面
返回值 | 1 / 0 - 成功 / 失败

SetToolbarItemTip | 动态更改工具条中某按钮的Tip (鼠标滑过时的文字) |
参数1 | 功能号
参数2 | 文字串
返回值 | 1 / 0 - 成功 / 失败

GetToolbarItemStatus | 取得工具条中某按钮/菜单项的状态 |
参数1 | 功能号 (如果是自定义项，必须大于等于3000)
参数2 | 可用状态，为 Enable、Visible、Check
返回值 | 1 / 0
备注 | 1.enable决定按钮或菜单是否灰色显示(disable); 2.visible决定是否让该按钮/菜单项出现; 3.check比较特殊，如果是按钮，必须是style="checkBox"类型的，决定按钮的凹陷状态；如果是菜单，则会在菜单左侧打一个勾

SetToolbarItemStatus | 动态更改工具条中某按钮/菜单项的状态 |
参数1 | 功能号 (如果是自定义项，必须大于等于3000)
参数2 | 可用状态，为 Enable、Visible、Check
参数3 | true / false
返回值 | 1 / 0 - 成功 / 失败
备注 | 1.enable决定按钮或菜单是否灰色显示(disable); 2.很多按钮是和报表内部动作关联的, 比如功能号为 104 的按钮(保存), 其状态始终会自动变化, 你要改变它的状态，也只能是暂时的; 3.visible决定是否让该按钮/菜单项出现; 4.check比较特殊，如果是按钮，必须是style="checkBox"类型的，决定按钮的凹陷状态；如果是菜单，则会在菜单左侧打一个勾; 5.visible 还将影响到鼠标右键弹出菜单的功能项, 哪怕这些功能不出现在工具条上;

AddMenu | 增加自定义的弹出菜单项 |
参数1 | 串、XML串，或URL，内容的格式规范请参考“7.自定义菜单”
参数2 | 可选，格式为LocateAt=[top/bottom], 表示自定义菜单在弹出时位于顶部还是底部，默认是bottom
返回值 | (无)
备注 | 只能在OnEvent(id, "MenuBeforePopup", ...)事件中执行。

AddHotKey | 增设快捷键。快捷键将触发HotKey事件 |
参数1 | 第一个快捷键，可以是F1至F12、字母、数字、或键的AscII码，也可再加Ctrl、Shift、Alt的组合，以'+'分隔.
参数2 | 可选，第二个快捷键，以此类推.
返回值 | (无)
备注 | 1.并不是所有键都能用作快捷的，受制于浏览器，您需要逐个测试; 2.快捷键将触发 HotKey 事件
示例 | AF.func("AddHotKey", "F12 \r\n Ctrl+F4 \r\n Ctrl+Shift+S \r\n Alt+5 \r\n Ctrl+32"); 分别表示了5个快捷键：F12、Ctrl+F4、Ctrl+Shift+S、Alt+5、Ctrl+空格(空格的AscII码是32)

EnableUndo | 启用或禁用Undo，允许人为关闭或开启 Undo 功能 |
参数 | true/false - 启用/禁用
返回值 | (无)

IsUndoEnabled | Undo功能是否启用中 |
参数 | (无)
返回值 | 1 / 0 - 启用/禁用

EnableRedo | 启用或禁用Redo，允许人为关闭或开启 Redo 功能 |
参数 | true/false - 启用/禁用
返回值 | (无)

IsRedoEnabled | Redo功能是否启用中 |
参数 | (无)
返回值 | 1 / 0 - 启用/禁用

Undo | 执行一步 Undo 操作 |
参数 | (无)
返回值 | 1 / 0 - 成功/失败, 失败的原因通常是 Undo 池已空

Redo | 执行一步 Redo 操作 |
参数 | (无)
返回值 | 1 / 0 - 成功/失败, 失败的原因通常是 Undo 池已空

SaveUndo | 将当前状态保存入 Undo 池 |
参数 | (无)
返回值 | (无)

ResetUndo | 清空 Undo 缓存池 |
参数 | (无)
返回值 | (无)

UndoAble | 根据 Undo 缓存池, 判断是否可执行 Undo 操作 |
参数 | (无)
返回值 | 1 / 0 - 是/否

RedoAble | 根据 Undo 缓存池, 判断是否可执行 Redo 操作 |
参数 | (无)
返回值 | 1 / 0 - 是/否

GetRedrawAble | 是否能够重画 |
参数 | (无)
返回值 | 1 / 0 - 能 / 不能

SetRedrawAble | 设置让报表能够重画或不能重画。为了提高性能，在需要连续对报表作改动性操作(比如改数据、改属性)前关闭重画，操作完成后再开启重画. |
参数 | true/false - 能 / 不能
返回值 | (无)

示例

    //关闭屏幕重画
    AF.func("SetRedrawAble", "false");
     //较大的循环, 需要执行很多遍 SetCellData、SetCellProp 之类的函数
     for(i=0; i<ncount; i++) {
      ...
      AF.func("SetCellData", cellname + " \r\n 4");
     }
    //恢复屏幕重画
    AF.func("SetRedrawAble", "true");

FlashCell | 开启或关闭单元格闪烁 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
参数3 | 闪烁次数, 0表示无限
返回值 | (无)
备注1 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名
备注2 | 无参数表示关闭闪烁, 包括复制后屏幕焦点处的闪烁
示例 | AF.func("FlashCell", ""); //关闭闪烁 AF.func("FlashCell", "C6 \r\n 4"); //C6单元格闪烁4次 AF.func("FlashCell", "C6:D9"); //不停歇地闪烁 AF.func("FlashCell", "5 \r\n 2 \r\n 5 \r\n 8"); //同上

CloseEdit | 强制关闭输入框 |
参数 | true/false - 把输入框中的内容更新到单元格/废弃输入框的内容, 默认是 true
返回值 | (无)
备注 | 通常是焦点离开输入框，输入框自动就会关闭的，但有的场合下不一定能自动关闭

GetFont | 取得字体信息 |
参数 | 字体的索引号
返回值 | 该字体的XML串，如果字体不存在，则为空串
备注 | 1.返回的XML串中, weight表示字体的粗细, 700是粗体, 400是常规; 2.有另外的快捷函数取单元格的字体： GetCellFont

示例

//假设您想知道A1单元格的字体，须先获得该单元格的字体索引号
var FontIndex = AF.func("GetCellProp", "A1 \r\n fontIndex");
//调用本函数
var xml = AF.func("GetFont", FontIndex);
//它返回的是诸如 "<Font faceName='宋体' charSet='134' height='-19' weight='700'/>" 这样的XML串
//假如你希望得到的是 JSON 串，那就请进一步调用全局函数 toJson:
var json = AF.func("toJson", xml + "\r\n recordSet");
//它返回的是诸如 "{'faceName':'宋体', 'charSet':'134', 'height':'-19', 'weight':'700'}" 这样的串

AddFont | 添加字体 |
参数 | 字体的XML串或Json串
返回值 | 字体的索引号
备注 | 1.如果字体已经存在，则返回已经存在的索引号; 2.有另外的快捷函数设置单元格的字体： SetCellFont
示例 | var FontIndex = AF.func("AddFont", "{'faceName':'宋体', 'charSet':'134', 'height':'-19', 'weight':'700'}"); AF.func("SetCellProp", "A1 \r\n FontIndex \r\n" + FontIndex);

DisplayAsPrintSetup | 将报表切换成仅显示打印配置对话框样式 |
参数 | 选项串，格式为 isNeedTitle=[?]; ok.Visible=[?]; ok.Text=[?]; cancel.Visible=[?]; cancel.Text=[?], 含义如下: isNeedTitle - 是否显示上方标题条, 默认是 true; ok.Visible - true/false, 是否显示“保存”按钮, 默认是 true; ok.Text - “保存”按钮上的文字; cancel.Visible - true/false, 是否显示“取消”按钮, 默认是 true; cancel.Text - “取消”按钮上的文字;
返回值 | (无)
备注 | 1.如果无参数，表示报表切换成原样(显示报表); 2.整个显示区显示报表打印对话框(非模式); 3.界面上默认有2个按钮：保存、取消; 4.点击“取消”，随即退出该模式，还原成普通报表显示模式; 5.点击“保存”，将立即把对话框配置内容更新到报表中，并触发PrintSetupBeforeUpdate、PrintSetupUpdate事件，不会退出对话框; 6.如果执行 Build 函数打开新的报表，对话框内容也将自动刷新

DisplayAsChart | 将报表切换成仅显示统计图 |
参数1 | 统计图的别名，如果有多个别名，以逗号分隔；也可以是带星号(*)的通配符, 表示符合条件的别名; 也可以是空串，表示所有统计图(没有别名的统计图将被临时分配一个别名).
参数2 | freeform的URL或XML大串，该freeform必须包含一个ImageFlow对象
返回值 | (无)
备注 | 1.如果无参数，表示报表切换成原样(显示报表); 2.报表包括工具条在内的整个区域全部切换成显示统计图; 3.点击统计图的某个数据项区域，将会触发同样的report的统计图事件; 4.alias别名和所处的工作表(WorkSheet)无关; 5.freeform即“自由表头”，请参考相关资料;

GetCurrentChart | 取得当前统计图(以显示统计图时) |
参数 | (无)
返回值 | 当前统计图别名。 如果报表中含有多工作表，则是类似 "mychart@sheet1"、"chart2@sheet2" 这种格式
备注 | 仅用于在调用了DisplayAsChart函数后、以统计图显示时

GetActiveWindow | 取得当前主区域的窗口句柄 |
参数 | (无)
返回值 | 句柄串.
备注 | 不太常用，常用于和第三方软件底层交互

SetExportFilename | 指定转换输出的文件名，通常用于 ExportDialog 事件 |
参数1 | 文件名，可以是带路径的全文件名，也可以不带路径
参数2 | 格式为 isOpenFileDialog=[?], 值可以是true/false, 表示是否打开后面的文件选择对话框，默认是True
返回值 | 无
备注 | 如果 isOpenFileDialog=false、且文件名不带路径，那么文件将被生成到 "我的文档" 目录下
示例 | function OnEvent(id, Event, p1, p2, p3, p4) { if(Event == "ExportDialog" && p1 == "xlsx") { AF.func("SetExportFilename", "MyDoc.xlsx \r\n isOpenFileDialog=0"); } }

SetNavigator | 设置超链接的重定位，常用于服务器专版 |
参数 | 带 "@para" 宏的URL，超链接触发后，该宏将被替换成真实参数，并将页面转向该URL
返回值 | 无

AnalyzeUserFunction | 分析某个单元格的自定义函数, 并将结果以JSON格式输出 |
参数1 | 行号(从0开始计数)
参数2 | 列号(从0开始计数)，或列名(如 A、K、AC)
返回值 | JSON串
备注1 | 也可以将行、列参数合并成一个参数：单元名，如B7、K11； 或者是单元格的别名、或文本框的别名；也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)