func_report.xml 69.5 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191
<?xml version='1.0' encoding='utf-8' ?>
<functions>
<category name="基本">
	<function name="Build 或 ReadSheet">
		<usage>打开一张报表</usage>
		<para>报表的URL(相对或绝对),或者是Report的XML串</para>
	</function>
	<function name="Calc 或 Fill">
		<usage>执行报表的计算,包括数据源的取数填充</usage>
		<para>可选,格式为 mode=[?];range=[?], 其含义分别为: &lt;br&gt;
&lt;b&gt;mode&lt;/b&gt; - 计算模式,值可以为 synch、asynch, 分别表示同步计算、异步计算,默认是同步计算。异步模式用于改善在数据源取数时服务器端响应缓慢而导致的界面滞涩;&lt;br&gt;
&lt;b&gt;range&lt;/b&gt; - 计算范围,值可以为:&lt;br&gt;
  full - 表示计算全部工作表,默认;&lt;br&gt;
  current - 仅计算当前工作表;&lt;br&gt;
  工作表序号(从0开始计数) - 指定计算某工作表,也可以是以逗号分隔的多个工作表,比如 “3,4,0” 表示顺序计算第四、第五、第一个工作表</para>
		<example>AF.func("calc", "mode=asynch;range=current");</example>
		<memo>如果是异步计算,js不应该再执行针对AF的函数了,应该在“Calced”事件中处理后续事务,否则异步将失去意义(&lt;font color=red&gt;非常重要&lt;/font&gt;);</memo>
		<illu>请参见演示页: 10.自定义函数、以及大量的数据源相关的demo页</illu>
	</function>
	<function name="GetFileXML">
		<usage>取得当前报表的XML串</usage>
		<para>可选,格式是 isSaveCalculateResult=[?], 值可以为&lt;br&gt;
&lt;b&gt;true&lt;/b&gt; - 连同数据源填入的数据一起保存;&lt;br&gt;
&lt;b&gt;false&lt;/b&gt; - 清除数据源填入的数据;&lt;br&gt;
&lt;b&gt;default&lt;/b&gt; - 按照报表模版中默认的选项(在报表属性中)</para>
		<return>XML串</return>
		<memo>1.Supcan Report是以XML保存的,而不是二进制;&lt;br&gt;2.该函数取得报表的XML后,通常需要再通过Ajax发送给服务器,用以保存报表;</memo>
		<example>AF.func("GetFileXML", "");&lt;br&gt;
AF.func("GetFileXML", "isSaveCalculateResult=true");
</example>
		<illu>请参见演示页: 11.动态创建</illu>
	</function>
	<function name="GetFileURL">
		<usage>取得上次打开(Build)的报表的文件名, 包括URL</usage>
		<return>文件名或URL,如果上次是通过一个XML大串Build的,那么返回串“@XML”</return>
	</function>
	<function name="SubscribeEvent">
		<usage>预订事件</usage>
		<para>需要预订的事件有:CurSelChanged、Clicked、DblClicked、EditChanged、Editing、CellPropChanged,其含义分别是:当前单元格切换、鼠标点击单元格、鼠标双击单元格、单元格或文本框的内容输入已更新、单元格或文本框的输入框已打开并且内容有修改、工具箱中单元格的某些属性被修改</para>
		<example>AF.func("SubscribeEvent", "CurSelChanged, Clicked");</example>
		<memo>BeforeCellPropChanged不需要单独预订,它将跟随CellPropChanged事件</memo>
		<illu>请参见演示页: 24.高级功能</illu>
	</function>
	<function name="CallFunc">
		<usage>调用工具条上的功能</usage>
		<para>功能号</para>
		<para>取决于功能号</para>
		<return>取决于功能号, 通常为: 1 - 成功, 0 - 失败</return>
		<memo>功能号参见"工具条功能号"章节</memo>
		<illu>请参见演示页: 1.体验硕正报表、10.自定义函数、19.中心数据源、34.左右分页打印</illu>
	</function>
</category>

<category name="数据源">
	<function name="SetSource (用途1)">
		<usage>设置中心数据源编目的URL</usage>
		<para>中心数据源编目的URL(相对或绝对)</para>
		<example>AF.func("setSource", "../center/dscenter.aspx");&lt;br&gt;
AF.func("Build", "reports/myreport1.xml");</example>
		<memo>1.中心数据源的编目URL是一次设置、全局(进程)有效的;&lt;br&gt;
2.建议在第一次打开报表前执行;&lt;br&gt;
3.一旦设置了URL,报表数据源对话框中就不需要用户自己输入URL了:&lt;img src="report3.png"&gt;&lt;br&gt;
4.建议该URL返回的XML/JSON数据支持&lt;a href="pub.htm#Tag604" target=_blank&gt;SoapLike&lt;/a&gt;异常包</memo>
		<illu>请参见演示页: 19.中心数据源</illu>
	</function>
	<function name="SetSource (用途2)">
		<usage>设置某临时数据源的URL</usage>
		<para>数据源ID</para>
		<para>URL(相对或绝对); 对于XML/JSON数据源,也允许是直接的XML大串</para>
		<para>可选,格式为 Para2=[?],  其含义为:&lt;br&gt;
&lt;b&gt;Para2&lt;/b&gt; - 可以为data/URL, 表示声明上面的“参数2”是纯数据串还是一个URL,仅用于TXT格式的数据,因为TXT格式的数据有时候很难自动判断到底是数据还是URL。如果不声明,系统优先判断为URL .&lt;br&gt;
</para>
		<example>AF.func("Build", "reports/myreport1.xml");&gt;&lt;br&gt;
AF.func("setSource", "ds1 \r\n dscenter/serv1.aspx");</example>
		<memo>1.必须先打开报表,再执行本函数,否则无效,这一点和中心数据源刚好相反;&lt;br&gt;			
2.建议该URL返回的XML/JSON数据支持&lt;a href="pub.htm#Tag604" target=_blank&gt;SoapLike&lt;/a&gt;异常包</memo>
		<illu>请参见临时数据源的所有演示页</illu>
	</function>
	<function name="SetSource (用途3)">
		<usage>强制更改某中心数据源的dataURL</usage>
		<para>数据源ID</para>
		<para>URL(相对或绝对)</para>
		<example>AF.func("setSource", "ds1 \r\n dscenter/serv1.aspx");</example>
	</function>
	<function name="GetSource">
		<usage>取得数据源的URL</usage>
		<para>数据源ID</para>
		<memo>
1.如果报表中只有一个数据源,参数(ID)可以忽略;&lt;br&gt;
2.如果该数据源是中心数据源,那么将返回它的dataURL;</memo>
		<return>URL串</return>
		<example>var url = AF.func("GetSource", "ds1");</example>
	</function>
	<function name="GetSources">
		<usage>取得所有数据源的ID</usage>
		<return>串,多个ID间以回车分隔. 例如“ds1,ds2,ds3”</return>
	</function>
	<function name="GetSourceInfo">
		<usage>取得某数据源的某些属性</usage>
		<para>数据源ID&lt;br&gt;注: 如果是复合XML数据源的子节点,应该命名为诸如 "ds1\node1" 这样的串(注意:在js中,应该写成"ds1\\node1")</para>
		<para>属性名,可以是: &lt;br&gt;
&lt;b&gt;CenterID&lt;/b&gt; - 中心数据源编目中的ID,仅用于中心数据源; &lt;br&gt;
&lt;b&gt;WSFunction&lt;/b&gt; - Web Service的方法(Method)名,仅用于Web Service类型的临时数据源;&lt;br&gt;
&lt;b&gt;FieldID&lt;/b&gt; - 取得各数据项(列)的ID,以回车分隔;&lt;br&gt;
&lt;b&gt;FieldText&lt;/b&gt; - 取得各数据项(列)的标题文字,以回车分隔;&lt;br&gt;
&lt;b&gt;AllFieldID&lt;/b&gt; - 取得全部 (包括不显示的) 数据项(列)的ID,以回车分隔;&lt;br&gt;
&lt;b&gt;AllFieldText&lt;/b&gt; - 取得全部 (包括不显示的) 数据项(列)的标题文字,以回车分隔;&lt;br&gt;
&lt;b&gt;para&lt;/b&gt; - 可变参数名,以回车分隔;&lt;br&gt;
&lt;b&gt;paraText&lt;/b&gt; - 可变参数的含义,以回车分隔;&lt;br&gt;
</para>
		<return></return>
	</function>
	<function name="SetParas (语法1)">
		<usage>设置某数据源的参数的值</usage>
		<para>数据源ID</para>
		<para>参数2、参数3...参数n,根据该数据源具体的定义</para>
		<example>AF.func("SetParas", "ds1 \r\n" + var1 +"\r\n"+ var2);</example>
	</function>
	<function name="SetParas (语法2)">
		<usage>设置某数据源的参数的值</usage>
		<para>数据源ID</para>
		<para>XML/JSON串、或类似"prop1=value1; prop2=value2; ..."的属性串</para>
		<example>AF.func("SetParas", "ds1 \r\n year=2012; month=2");</example>
	</function>
	<function name="SetParasEx">
		<usage>强制设定数据源的附加参数</usage>
		<para>参数串,例如"OrgId=2001&amp;Dept=33"</para>
		<memo>1.全局有效;对中心数据源和临时数据源都有效;&lt;br&gt;
2.这些参数将附加在数据源取数URL的后面,也就是说URL将被重新拼装;&lt;br&gt;
3.如果原URL中已经包含同名的参数,将以该函数设置的为准;&lt;br&gt;
</memo>
	</function>
	<function name="GetParaNames">
		<usage>取得某数据源的参数名</usage>
		<para>数据源ID</para>
		<return>参数名,若有多个参数,则以回车分隔</return>
	</function>
	<function name="SetDSColInfo">
		<usage>设置或添加某临时数据源的某个数据列信息</usage>
		<para>数据源ID&lt;br&gt;注: 如果是复合XML数据源的子节点,应该命名为诸如 "ds1\node1" 这样的串(注意:在js中,应该写成"ds1\\node1")</para>
		<para>列名</para>
		<para>列标题名</para>
		<para>数据类型</para>
	</function>
	<function name="DeleteDSCol">
		<usage>删除某临时数据源的某个数据列</usage>
		<para>数据源ID&lt;br&gt;注: 如果是复合XML数据源的子节点,应该命名为诸如 "ds1\node1" 这样的串(注意:在js中,应该写成"ds1\\node1")</para>
		<para>列名</para>
	</function>
	<function name="NewDS">
		<usage>新建中心数据源</usage>
		<para>数据源ID</para>
		<para>中心数据源的ID号</para>
	</function>
	<function name="SynchCenterDS">
		<usage>强制中心数据源和后端同步</usage>
		<detail>强制中心数据源和后端同步,用于清理中心数据源的自定义信息,例如:列是否显示、列显示顺序、排序、超链接等.</detail>
	</function>
	<function name="GetWorkSheetNameOfDs">
		<usage>取得某数据源能够被用于哪些工作表</usage>
		<detail>取得某数据源能够被用于哪些工作表,用于在数据源对话框中限制了数据源和工作表对应关系的情况</detail>
		<return>工作表名, 若有多个工作表则以逗号分隔</return>
	</function>
	<function name="GetDsOfWorkSheet">
		<usage>取得工作表能使用哪些数据源</usage>
		<detail>取得工作表能使用哪些数据源,用于在数据源对话框中限制了数据源和工作表对应关系的情况</detail>
		<para>可选,工作表名或工作表顺序号,从0开始计数。如果不指定工作表,则默认为当前工作表</para>
		<return>数据源的ID, 若有多个数据源则以逗号分隔</return>
	</function>
	<function name="GetColsOdDs">
		<usage>取得某数据源对应到表格中的各个列</usage>
		<detail>取得某数据源对应到表格中的各个列, 即取得 =datarow( ) 函数横向填充的各个列的位置</detail>
		<para>数据源ID</para>
		<return>以逗号分隔的各个列的序号 (序号从0开始计数)</return>
	</function>
	<function name="GetDSXML">
		<usage>取得某数据源的XML描述串</usage>
		<para>数据源ID</para>
		<return>XML串</return>
	</function>
	<function name="SetDSXML">
		<usage>根据数据源的XML描述串,动态更改或添加数据源</usage>
		<para>XML描述串</para>
		<return>1/0 - 成功/失败</return>
		<memo>1.如果该数据源不存在,则会自动添加;&lt;br&gt;
2.该函数常用于动态更改数据源的内容,比如动态添加数据列. 由于XML结构比较复杂,建议借助全局函数中的 "DOM_函数" 来处理;&lt;br&gt;
</memo>
	</function>
	<function name="GetUsedDS">
		<usage>取得工作表的计算公式中使用了哪些数据源</usage>
		<para>可选,工作表名或工作表顺序号,从0开始计数; -1表示所有工作表;如果不指定工作表,则默认为当前工作表</para>
		<return>数据源的ID, 若有多个数据源则以逗号分隔</return>
	</function>
	<function name="ParseUsedDS">
		<usage>取得工作表的计算公式中使用了哪些数据源,包括参数</usage>
		<para>可选,工作表名或工作表顺序号,从0开始计数; -1表示所有工作表;如果不指定工作表,则默认为当前工作表</para>
		<return>串,格式规定如下:&lt;br&gt;
1.数据源的ID和参数, 相互之间以Tab(即\t)分隔,参数是原参数,即有可能是带引号的;&lt;br&gt;
2.若有多种不同数据源及参数组合,则相互以回车符(\r\n)分隔;</return>
	</function>
</category>

<category name="行列">
	<function name="GetRows">
		<usage>取得总行数</usage>
		<return>数字</return>
	</function>
	<function name="GetCols">
		<usage>取得总列数</usage>
		<return>数字</return>
	</function>
	<function name="InsertRows">
		<usage>插入行</usage>
		<para>插入处行号(从0开始计数,-1表示从末尾添加)</para>
		<para>可选, 插入行数,默认1</para>
		<para>可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插</para>
		<return>1-成功,空串-失败</return>
	</function>
	<function name="InsertCols">
		<usage>插入列</usage>
		<para>插入处列号(从0开始计数,-1表示从末尾添加),或列名(如A、B、C..)</para>
		<para>可选, 插入列数,默认1</para>
		<para>可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插</para>
		<return>1-成功,空串-失败</return>
	</function>
	<function name="DeleteRows">
		<usage>删除行</usage>
		<para>开始删除的行号(从0开始计数)</para>
		<para>行数,-1表示删除后面所有行</para>
		<return>1-成功,空串-失败</return>
	</function>
	<function name="DeleteCols">
		<usage>删除列</usage>
		<para>开始删除的列号(从0开始计数),或列名(如A、B、C..)</para>
		<para>列数,-1表示删除后面所有列</para>
		<return>1-成功,空串-失败</return>
	</function>
	<function name="IsRowHide">
		<usage>某行是否被隐藏</usage>
		<para>行号(从0开始计数)</para>
		<return>1/0 - 是/否</return>
	</function>
	<function name="HideRow">
		<usage>隐藏行</usage>
		<para>行号(从0开始计数)</para>
		<para>可选,数量,默认1</para>
		<para>可选,true/false - 隐藏/解除隐藏,默认true</para>
	</function>
	<function name="IsColHide">
		<usage>某列是否被隐藏</usage>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return>1/0 - 是/否</return>
	</function>
	<function name="HideCol">
		<usage>隐藏列</usage>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>可选,数量,默认1</para>
		<para>可选,true/false - 隐藏/解除隐藏,默认true</para>
	</function>
	<function name="GetRowHeight">
		<usage>取得某行高</usage>
		<para>行号(从0开始计数)</para>
		<return>数字,单位:像素数</return>
	</function>
	<function name="SetRowHeight">
		<usage>设置某行高</usage>
		<para>行号(从0开始计数)</para>
		<para>数字,单位:像素数,范围:0-2000</para>
	</function>
	<function name="GetColWidth">
		<usage>取得某列宽</usage>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return>数字,单位:像素数</return>
	</function>
	<function name="SetColWidth">
		<usage>设置某列宽</usage>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>数字,单位:像素数,范围:0-2000</para>
	</function>
	<function name="GetRowProp">
		<usage>取某行的其它属性</usage>
		<para>行号(从0开始计数)</para>
		<para>
&lt;b&gt;ds&lt;/b&gt; - 该行是否数据源动态插入的行; &lt;br&gt;
&lt;b&gt;print&lt;/b&gt; - 该行是否打印; &lt;br&gt;
&lt;b&gt;pageBreak&lt;/b&gt; - 在该行处是否强制分页;&lt;br&gt;
&lt;b&gt;pageNumber&lt;/b&gt; - 强制分页的页码;</para>
		<return>对于pageNumber属性,返回页码数字;其他返回 1/0 - 是/否, 空串表示失败</return>
		<memo>数据源动态插入的行(行号在左标尺以深蓝色显示),在模版保存是会自动被删除</memo>
	</function>
	<function name="SetRowProp">
		<usage>设置某行的某些属性</usage>
		<para>行号(从0开始计数)</para>
		<para>
&lt;b&gt;ds&lt;/b&gt; - 该行是否数据源动态插入的行; &lt;br&gt;
&lt;b&gt;print&lt;/b&gt; - 该行是否打印; &lt;br&gt;
&lt;b&gt;pageBreak&lt;/b&gt; - 在该行处是否强制分页;&lt;br&gt;
&lt;b&gt;pageNumber&lt;/b&gt; - 强制分页的页码;
</para>
		<para>对于pageNumber属性,是页码数字;请他: true / false - 是 / 否</para>
		<return>1/0 - 成功/失败</return>
		<memo>不建议强制设置 ds 属性</memo>
	</function>
</category>

<category name="单元格命名相关函数">
	<function name="GetCellName">
		<usage>根据行列号得到单元名</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数)</para>
		<return>串 - 单元格名,如"D9"、"AA2</return>
		<example>AF.func("GetCellName", "4 \r\n 0"); 返回 A5</example>
	</function>
	<function name="GetCellRow">
		<usage>根据单元名得到行号</usage>
		<para>单元名</para>
		<return>行号</return>
		<example>AF.func("GetCellRow", "A5"); 返回 4</example>
	</function>
	<function name="GetCellCol">
		<usage>根据单元名得到列号</usage>
		<para>单元名</para>
		<return>列号</return>
		<example>AF.func("GetCellCol", "A5"); 返回 0</example>
	</function>	
</category>
<category name="单元格">
	<function name="SelectCell(用途1)">
		<usage>选取焦点单元、或嵌入对象(如文本框)</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数)</para>
		<para>可选, 至行号, -1表示到末行</para>
		<para>可选, 至列号, -1表示到末列</para>
		<para>可选, 可以为input, 表示打开输入框,直接进入编辑状态</para>
		<illu>请参见演示页: 1.体验硕正报表、36.套打(一)</illu>
		<return>true/false - 成功/失败</return>
		<memo>参数也不一定要完全按照上述规定,语法其实是比较灵活的,请参见下面的示例:</memo>
		<example>AF.func("SelectCell", "A5");   //选取A5单元格&lt;br&gt;
		AF.func("SelectCell", "A5 \r\n B8");   //选取从A5单元格到B8单元格之间的区域&lt;br&gt;
		AF.func("SelectCell", "5 \r\n C");   //C 是列名, 表示第三列&lt;br&gt;
		AF.func("SelectCell", "B5 \r\n -1 \r\n -1");   //选取从B5单元格到报表右下角整个区域&lt;br&gt;
		AF.func("SelectCell", "Addr \r\n DKP");   //选取从别名为"Addr"的单元格到别名为"DKP"之间的区域
		AF.func("SelectCell", "Addr \r\n input");   //选取别名为"Addr"的单元格或文本框,然后直接打开输入
		</example>
	</function>
	<function name="GetCurrentCell">
		<usage>取得当前焦点单元格</usage>
		<para>可选,顺序号(从0开始计数),默认是0. 如果当前焦点是一块区域,可以用顺序号参数逐个取得单元格名,循环顺序是逐行逐列</para>
		<return>串,单元格名,如 "D4"、"E4"; 如果当前选中的是内嵌对象(如文本框),则返回它的别名</return>
	</function>
	<function name="GetCurrentCells">
		<usage>取得当前焦点单元格</usage>
		<return>串,包含左上、右下的2个单元格名,如 "D4:E5"、"E4:E4", 注:"E4:E4"是一个单元格; 如果当前选中的是内嵌对象(如文本框),则返回以逗号分隔的别名</return>
	</function>
	<function name="EnsureVisible">
		<usage>自动滚动到让某单元格可见</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数)</para>
		<return>true/false - 成功/失败</return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名</memo>
	</function>
	<function name="GetCellData">
		<usage>取得某单元的内容或计算结果</usage>
		<detail>取得某单元的内容,或者计算公式的值</detail>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return></return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
		<example>var s1 = AF.func("getCellData", "3 \r\n 9");&lt;br&gt;
		var s2 = AF.func("getCellData", "B7");&lt;br&gt;
		var s3 = AF.func("getCellData", "B7@Sheet2");   //指定取第二个工作表&lt;br&gt;
		var s4 = AF.func("getCellData", "MyTh");   //"MyTh"是别名&lt;br&gt;
		</example>
	</function>
	<function name="SetCellData">
		<usage>设置某单元内容、或公式</usage>
		<detail>设置某单元的内容、或计算公式(计算公式以等号开头)</detail>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para></para>
		<memo>.也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格);&lt;br&gt;&lt;br&gt;
&lt;font color=red&gt;严重警告:&lt;/font&gt;参数2和参数3之间不得留有多余空格,否则结果将不是你所期望的,例如:&lt;br&gt;  AF.func("SetCellData", "C5 \r\n   "+ vCity);  //执行结果是左侧有多余空格</memo>
	</function>
	<function name="GetCellDataEx">
		<usage>取得某单元的内容或计算结果(Checkbox优先)</usage>
		<para>同 GetCellData</para>
		<return></return>
		<memo>和 GetCellData 函数唯一的差别是:如果单元格是CheckBox,那么返回的是 0 或 1,否则和GetCellData一样</memo>
	</function>
	<function name="SetCellDataEx">
		<usage>设置某单元内容、或公式(CheckBox优先)</usage>
		<para>同 SetCellData</para>
		<memo>和 SetCellData 函数唯一的差别是:如果单元格是CheckBox、并且最后一个参数是 0 或 1,那么就设置这个CheckBox而不是修改文字.</memo>
	</function>
	<function name="GetCellText">
		<usage>取得某单元的显示内容</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return></return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
		<example>var s1 = AF.func("getCellText", "3 \r\n 9");&lt;br&gt;
		var s2 = AF.func("getCellText", "B7");&lt;br&gt;
		var s3 = AF.func("getCellText", "B7@Sheet2");   //指定取第二个工作表&lt;br&gt;
		var s4 = AF.func("getCellText", "MyTh");   //"MyTh"是别名&lt;br&gt;
		</example>
	</function>
	<function name="GetCellFormula">
		<usage>取得某单元的计算公式</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return>串, 空串表示非计算公式</return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
	</function>
	<function name="GetCellProp(用途1)">
		<usage>取得某单元格的属性</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>属性名,可以是自定义属性,也可以和XML文件中的一致,大约有20种,如TextColor, BgColor, formula(输入的公式), datatype, decimal, isRound(是否四舍五入), isThousandSeparat(千位符), isProtected(保护), align, vAlign, fontIndex, leftBorder, topBorder, leftBorderColr, topBorderColor, isCheckbox, isChecked, 
checkboxGroup, Alias(别名), HRef(超链接), Tip, Attr(指标属性)、crosstabRowDir(交叉表的行值)、crosstabColDir(交叉表的列值)、Arrow(左侧标记色)等。</para>
		<return>内容串(透明的背景色用“T”表示)</return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
	</function>
	<function name="SetCellProp(用途1)">
		<usage>设置某单元格的属性</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>属性名, 和GetCellProp( )同</para>
		<para>值串(透明的背景色请用“T”表示)</para>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
		<example>AF.func("SetCellProp", "C6 \r\n BgColor  \r\n T");&lt;br&gt;AF.func("SetCellProp", "C6 \r\n TextColor  \r\n Red");&lt;br&gt;AF.func("SetCellProp", "C6 \r\n CustormerID \r\n 33801");  //自定义属性</example>
	</function>
	<function name="FindCell">
		<usage>根据表达式查找单元格</usage>
		<para>表达式串,表达式中可以含变量:data(表示输入的内容或计算结果)、formula(输入的公式)、alias(别名),其它变量表示自定义属性.</para>
		<return>以逗号分隔的单元名,如"D3"、"K2,K4"</return>
  <example>AF.func("FindCell", "left(formula,1)='='");  //取得所有输入了公式的单元格&lt;br&gt;
AF.func("FindCell", "left(alias, 3)='mpc'));  //取得别名以“mpc”开头的单元格&lt;br&gt;
AF.func("FindCell", "price=33");  //自定义属性"price"为33的单元格</example>
	</function>
	<function name="CloneArea">
		<usage>克隆区域</usage>
		<detail>克隆某个区域到一个新的区域</detail>
		<para>左上单元格行号(从0开始计数)</para>
		<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>右下单元格行号(从0开始计数)</para>
		<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>格式为 : row=[?];col=[?],  row、col至少要定义一个,含义为:&lt;br&gt;
row - 克隆到从该行开始的新区域,如果行不够,则自动向下扩展;&lt;br&gt;
col - 克隆到从该列开始的新区域,如果列不够,则自动向右扩展;&lt;br&gt;
</para>
		<return>新区域的左上角、右下角单元格名,以冒号(:)分隔。如果是空串,则表示失败,失败原因通常是参数有错误、区域有交集</return>
		<memo>1.也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;&lt;br&gt;
2.新、原区域不得有交集;
</memo>
		<example>如下函数是同一个意思:&lt;br&gt;AF.func("CloneArea", "C6:F7\r\nrow=30");&lt;br&gt;AF.func("CloneArea", "C6 \r\n F7 \r\nrow=30");&lt;br&gt;AF.func("CloneArea", "5 \r\n 2 \r\n 6 \r\n 5 \r\nrow=30");</example>
	</function>
</category>

<category name="单元格合并">
	<function name="GetCellStatus">
		<usage>取得某单元格的状态</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return>A - 普通单元格; &lt;br&gt; H - 被合并; &lt;br&gt; M - 被合并,但位于合并区的左上角,是有效的主单元格; &lt;br&gt; 空串 - 该单元格不存在</return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
	</function>
	<function name="GetMainCell">
		<usage>取得某单元格所在的合并区域中的主单元格(即左上角单元格)</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return>单元格名。如果本单元格没有被合并,则返回本单元格名</return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
	</function>
	<function name="GetMergedCells">
		<usage>取得某单元格所在的合并区域</usage>
		<para>行号(从0开始计数)</para>
		<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return>以“:”分隔的左上角和右下角的单元名。如果本单元格没有被合并,则返回本单元格名</return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
	</function>
	<function name="Merge">
		<usage>合并单元格</usage>
		<para>左上单元格行号(从0开始计数)</para>
		<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>右下单元格行号(从0开始计数)</para>
		<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
		<example>如下函数是同一个意思:&lt;br&gt;AF.func("Merge", "C6:F7");&lt;br&gt;AF.func("Merge", "C6 \r\n F7");&lt;br&gt;AF.func("Merge", "5 \r\n 2 \r\n 6 \r\n 5");</example>
	</function>
	<function name="DeMerge(用法1)">
		<usage>解除指定区域的合并</usage>
		<para>左上单元格行号(从0开始计数)</para>
		<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>右下单元格行号(从0开始计数)</para>
		<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
		<example>如下函数是同一个意思:&lt;br&gt;AF.func("deMerge", "C6:F7");&lt;br&gt;AF.func("deMerge", "C6 \r\n F7");&lt;br&gt;AF.func("deMerge", "5 \r\n 2 \r\n 6 \r\n 5");</example>
	</function>
	<function name="DeMerge(用法2)">
		<usage>解除某个单元格所在区域的合并</usage>
		<para>单元格行号(从0开始计数)</para>
		<para>单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名; 也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
		<example>AF.func("deMerge", "C6");</example>
	</function>
	<function name="MergeSame(用途1)">
		<usage>合并某行给定范围内相同内容的单元格</usage>
		<para>格式为:row=[?];col1=[?];col2=[?];isIgnoreNull=[?],含义为:&lt;br&gt;
&lt;b&gt;row&lt;/b&gt;  - 某行的行号&lt;br&gt;
&lt;b&gt;col1&lt;/b&gt;  - 开始列号或类似A,B,C的列名,默认是0&lt;br&gt;
&lt;b&gt;col2&lt;/b&gt;  - 结束列号或类似A,B,C的列名,默认是次末列&lt;br&gt;
&lt;b&gt;isIgnoreNull&lt;/b&gt;  - 内容为空是否就不合并了,true/false,默认是true&lt;br&gt;
&lt;b&gt;isDemergeFirst&lt;/b&gt;  - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true&lt;br&gt;
&lt;b&gt;isKeepMergeAsPossible&lt;/b&gt;  - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效&lt;br&gt;
</para>
	</function>
	<function name="MergeSame(用途2)">
		<usage>合并某列给定范围内相同内容的单元格</usage>
		<para>格式为:col=[?];row1=[?];row2=[?];isIgnoreNull=[?];isDemergeFirst=[?],含义为:&lt;br&gt;
&lt;b&gt;col&lt;/b&gt;  - 列号或类似A,B,C的列名&lt;br&gt;
&lt;b&gt;row1&lt;/b&gt;  - 开始行的行号,默认是0&lt;br&gt;
&lt;b&gt;row2&lt;/b&gt;  - 结束行的行号,默认是次末行&lt;br&gt;
&lt;b&gt;isIgnoreNull&lt;/b&gt;  - 内容为空是否就不合并了,true/false,默认是true&lt;br&gt;
&lt;b&gt;isDemergeFirst&lt;/b&gt;  - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true&lt;br&gt;
&lt;b&gt;isKeepMergeAsPossible&lt;/b&gt;  - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效&lt;br&gt;
</para>
	</function>
	<function name="SplitCol">
		<usage>将某列分拆成多列,并自动合并同类项</usage>
		<detail>将某列分拆成多列,并自动合并同类项,分拆、合并的算法和树列表的 VColSep 算法完全一致</detail>
		<para>格式为:col=[?];row1=[?];row2=[?];VColSep=[?],含义为:&lt;br&gt;
&lt;b&gt;col&lt;/b&gt;  - 列号或类似A,B,C的列名&lt;br&gt;
&lt;b&gt;row1&lt;/b&gt;  - 开始行的行号,默认是0&lt;br&gt;
&lt;b&gt;row2&lt;/b&gt;  - 结束行的行号,默认是次末行&lt;br&gt;
&lt;b&gt;VColSep&lt;/b&gt;  - 分隔符,含义和树列表的 VColSep 一致 &lt;br&gt;
</para>
	</function>
	<function name="GetValidCells">
		<usage>取得某个区域内有效的单元格</usage>
		<detail>取得某个区域内有效的单元格, 所谓“有效”是指不包括被合并的单元格</detail>
		<para>左上单元格行号(从0开始计数)</para>
		<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
		<para>右下单元格行号(从0开始计数)</para>
		<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
		<return>以逗号分隔的单元格名</return>
		<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;</memo>
		<example>如下函数是同一个意思:&lt;br&gt;var s = AF.func("GetValidCells", "C6:F7");&lt;br&gt;var s = AF.func("GetValidCells", "C6 \r\n F7");&lt;br&gt;var s = AF.func("GetValidCells", "5 \r\n 2 \r\n 6 \r\n 5");</example>
	</function>
</category>

<category name="内嵌对象(文本框/图片/统计图/线条/树列表)">
	<function name="GetGraphics">
		<usage>取得所有内嵌对象的别名</usage>
		<para>可选,类型筛选,可以是如下类型的组合(逗号分隔):Chart、Line、TextBox、Picture、Treelist, 分别表示统计图、线条、文本框、图片、树列表</para>
		<return>别名串,多个别名之间以逗号分隔</return>
	</function>
	<function name="GetCellProp(用途2)">
		<usage>取得某内嵌对象的属性</usage>
		<para>内嵌对象的别名</para>
		<para>属性名,不同的内嵌对象类型是有差别的,请参考XML文件,内嵌对象的属性有:&lt;br&gt;
&lt;b&gt;公共属性&lt;/b&gt;&lt;br&gt;
 type - 内嵌对象类型,返回值为Chart、Line、Textbox、Picture;&lt;br&gt;
 isPrint - 打印       isProtected - 保护     rect - 矩形区的坐标&lt;br&gt;
 isLocked - 锁定行列位置  unDragAbleAtRuntime - 运行时不可拖拽&lt;br&gt;
&lt;b&gt;文本框的属性&lt;/b&gt;&lt;br&gt;
 text - 文字或计算结果    formula - 计算公式     fontIndex - 字体索引 &lt;br&gt;
 bgColor - 背景色      textColor - 文字色     align/valign - 文字对齐 &lt;br&gt;
 dataType - 数据类型     isRound - 四舍五入    decimal - 小数位数 &lt;br&gt;
 isThousandSeparat - 千位符 maskid - 显示掩码     rect - 矩形坐标&lt;br&gt;
 charSpace - 字间距     lineDistance - 行间距    isUnderLine - 边框仅画底边&lt;br&gt;
 borderThick - 边框粗    borderColor - 边框色    borderStyle - 边框风格&lt;br&gt;
 RoundX/RoundY - 圆角直径 isNoZoom - 尺寸和打印比例无关&lt;br&gt;
&lt;b&gt;图片的属性&lt;/b&gt;&lt;br&gt;
 isTransparent - 是否透明   blobid/picture - 图片    rect - 矩形坐标&lt;br&gt;
 borderThick - 边框粗     borderColor - 边框色    borderStyle - 边框风格&lt;br&gt;
 RoundX/RoundY - 圆角直径  align/valign - 图片对齐   isNoZoom - 尺寸和打印比例无关&lt;br&gt;
&lt;b&gt;统计图的属性&lt;/b&gt;:&lt;br&gt;
 ChartType、items、textContent...等近20项,请参考统计图组件的&lt;a href="chart.htm?62#Tag801" target=_blank&gt;创建参数&lt;a/&gt;.&lt;br&gt;
&lt;b&gt;自定义属性&lt;/b&gt;:&lt;br&gt;
 不在上述范围内的属性就都算是自定义属性.&lt;br&gt;
		</para>
		<return>内容串</return>
		<memo>上述矩形坐标 rect 的格式为逗号分隔的4个值: x1,y1,x2,y2</memo>
	</function>
	<function name="SetCellProp(用途2)">
		<usage>设置某内嵌对象的属性</usage>
		<para>内嵌对象的别名</para>
		<para>属性名, 同上面的GetCellProp( )函数的属性</para>
		<para>值串</para>
	</function>
	<function name="DeleteGraphics">
		<usage>删除某些内嵌对象</usage>
		<para>别名,如果要同时删除多个,请用逗号分隔</para>
		<memo>动态插入新的内嵌对象请用CallFunc函数</memo>
	</function>
</category>

<category name="工作表">
	<function name="GetWorksheets">
		<usage>取得工作表的个数</usage>
		<return>数字</return>
	</function>
	<function name="GetCurrentWorksheet">
		<usage>取得当前工作表序号</usage>
		<return>序号(从0开始计数)</return>
	</function>
	<function name="SetCurrentWorksheet">
		<usage>切换当前工作表</usage>
		<para>序号(从0开始计数),或工作表名称</para>
		<return>1/0 - 成功/失败</return>
	</function>
	<function name="GetWorksheetName">
		<usage>取得工作表的名称</usage>
		<para>序号(从0开始计数)</para>
		<return>字符串</return>
	</function>
	<function name="SetWorksheetName">
		<usage>修改工作表的名称</usage>
		<para>序号(从0开始计数),或工作表名称</para>
		<para>新的名称</para>
		<return>1/0 - 成功/失败</return>
	</function>
	<function name="DeleteWorksheet">
		<usage>删除工作表</usage>
		<para>序号(从0开始计数),或工作表名称</para>
		<return>1/0 - 成功/失败</return>
	</function>
	<function name="AppendWorksheet">
		<usage>添加工作表:从外部报表导入</usage>
		<para>外部报表文件的URL, 注:除了硕正报表文件,也可以是Excel2007的 xlsx 格式文件</para>
		<para>可选,可挑选如下4种格式之一:&lt;br&gt;
&lt;b&gt;空串&lt;/b&gt; - 即无此参数,表示导入该外部报表的所有工作表;&lt;br&gt;
&lt;b&gt;?&lt;/b&gt; - 如果外部报表有多个工作表,则打开对话框选择;&lt;br&gt;
&lt;b&gt;sheetnum=0,3,4&lt;/b&gt;的串 - 导入顺序号为0、3、4的工作表;&lt;br&gt;
&lt;b&gt;sheetname=利润表,资产负债表&lt;/b&gt;的串 - 导入工作表名为“利润表”,“资产负债表”的工作表;&lt;br&gt;
</para>
		<return>1/0 - 成功/失败</return>
		<example>AF.func("addWorksheet", "../model1.xml \r\n ?");&lt;br&gt;
AF.func("appendWorksheet", "../model1.xml \r\n sheetname=工作簿3, 工作簿22");
</example>
	</function>
	<function name="AddWorksheet">
		<usage>添加工作表:新建空的工作表</usage>
		<para>格式为:name=[?]; rows=[?];cols=[?]; rowheight=[?]; colwidth=[?], 含义如下:&lt;br&gt;
name - 工作表名;&lt;br&gt;
rows/cols - 总行数/列数,默认是100/20;&lt;br&gt;
rowheight/colwidth - 行高/列宽, 默认是24/140&lt;br&gt;
</para>
		<return>1/0 - 成功/失败</return>
		<example>AF.func("addWorksheet", "name=薪资;rows=5;cols=10");</example>
	</function>
	<function name="GetWorksheetNameOfDS">
		<usage>取得某数据源指定用于某些工作表的名称</usage>
		<para>数据源ID</para>
		<return>逗号分隔的工作表名</return>
		<memo>指定数据源用于某些工作表的功能,在数据源首个对话框中</memo>
	</function>

	<function name="SetProp(用途1)">
		<usage>设置工作表的某些属性</usage>
		<para>格式为 "item1=value1;item2=value2;..." 的属性串,属性含义及可用值如下:&lt;br&gt;
&lt;b&gt;isRefOriPrecision&lt;/b&gt; - true/false, 单元格之间的引用计算是否以原始精度为准;&lt;br&gt;
&lt;b&gt;isShowZero&lt;/b&gt; - true/false, 计算结果为零时,是否显示0.00; &lt;br&gt;
&lt;b&gt;isUsingEditMask&lt;/b&gt; - true/false, 是否启用单元格的数据类型校验; &lt;br&gt;
&lt;b&gt;isForGraphicObjectsOnly&lt;/b&gt; - true/false, 是否以画文本框、线条等为主,不需要表格线; &lt;br&gt;
&lt;b&gt;isRowHeightAutoExtendAble&lt;/b&gt; - true/false, 是否允许自动调整行高; &lt;br&gt;
&lt;b&gt;isRowHeightAutoExtendAfterRefreshed&lt;/b&gt; - true/false, 从数据源加载数据后,是否立即自动调整行高; &lt;br&gt;
&lt;b&gt;LineDistance&lt;/b&gt; - 像素数, 行距; &lt;br&gt;
&lt;b&gt;AutoBreakLine&lt;/b&gt; - 0至3的数字, 文字超宽处理,0:自动换行、缩小字体,换行优先; 1:不处理; 2: 自动缩小字体、换行,缩小字体优先; 3: 自动换行,但不缩小字体;&lt;br&gt;
&lt;b&gt;BackColor&lt;/b&gt; - 背景色; &lt;br&gt;
&lt;b&gt;BackPicture 或 BackImage&lt;/b&gt; - 背景图, 为一 URL, 空串表示清除背景图; &lt;br&gt;
&lt;b&gt;isTile&lt;/b&gt; - true/false, 背景图的布局,分别表示铺满/单幅; &lt;br&gt;
&lt;br&gt;
  此外,也可以通过本函数更改某些独立于当前工作表(即对所有工作表都生效)的属性:&lt;br&gt;
&lt;b&gt;Ruler&lt;/b&gt; - 动态显示或隐藏标尺,值为Horz/Vert,分别表示水平/垂直标尺,也可以是空串,或逗号分隔的组合;&lt;br&gt;
&lt;b&gt;toolbarVisible&lt;/b&gt; - 动态显示/隐藏工具条,值为true/false;&lt;br&gt;
&lt;b&gt;PagesTabPercent&lt;/b&gt; - 底部滑动条的左侧Tab区长度占总宽度的百分比,0到100;&lt;br&gt;
&lt;b&gt;isAutoCalculateWhenOpen&lt;/b&gt; - 报表打开时是否立即自动计算,值为true/false;&lt;br&gt;
&lt;b&gt;isSaveCalculateResult&lt;/b&gt; - 报表保存时,是否连同数据源填入的数据一起保存,值为true/false;&lt;br&gt;
&lt;b&gt;isSheetDragAble&lt;/b&gt; - true/false, 底部的工作表页签是否允许被鼠标拖拽交换位置;&lt;br&gt;
  上述有些属性是“创建参数”.
		</para>
	</function>
	<function name="GetProp(用途1)">
		<usage>取得工作表的某些属性</usage>
		<para>属性名,参见函数SetProp( ). &lt;br&gt;
此外,参数 &lt;b&gt;Crosstab&lt;/b&gt; 表示取得交叉表的XML串.
</para>
		<return>属性的值</return>
	</function>
	<function name="GetProp(用途2)">
		<usage>取得工作表的交叉表、分类汇总配置XML</usage>
		<para>固定的串,为 crosstab 或 summary,  分别表示交叉表、分类汇总表</para>
		<return>XML串</return>
		<memo>XML串较复杂,需要您对报表的XML文件中的 Crosstabs、Summaries 节点进行分析</memo>
	</function>
	<function name="SetProp(用途2)">
		<usage>设置工作表的交叉表、分类汇总配置XML</usage>
		<para>固定的串,为 crosstab 或 summary,  分别表示交叉表、分类汇总表</para>
		<para>XML串</para>
		<memo>XML串较复杂,需要您对报表的XML文件中的 Crosstabs、Summaries 节点进行分析</memo>
	</function>
</category>

<category name="打印">
	<function name="Print">
		<usage>打印</usage>
		<para>1-允许弹出系统打印对话框, 0-不弹出对话框直接打印</para>
		<return>1/0 - 成功/失败</return>
	</function>
	<function name="BeginBatchPrint">
		<usage>开始批打印</usage>
		<para>可选,格式为 StartPageNum=[?]; isMultiPrintTask=[?]; isShareBlankPart=[?]; isPreview=[?]; PreviewDPI=[?], 其含义如下:&lt;br&gt;
&lt;b&gt;StartPageNum&lt;/b&gt;&lt;b&gt;StartPageNumber&lt;/b&gt;- 批中起始页码(任务中的总页码), 默认是1;&lt;br&gt;
&lt;b&gt;isMultiPrintTask&lt;/b&gt; - 是否按奇偶页拆分成2个打印任务打印,  默认是false;&lt;br&gt;
&lt;b&gt;isShareBlankPart&lt;/b&gt; - 如果是名片式打印(即每张纸能均分成多块的打印),是否共享前一张纸的空白部分,以节省打印纸,默认是false;&lt;br&gt;
&lt;b&gt;isPreview&lt;/b&gt; - 是否用于预览,默认是false;&lt;br&gt;
&lt;b&gt;PreviewDPI&lt;/b&gt; - 预览时指定使用 DPI(每英寸像素数) 精度,0表示以当前打印设备的DPI,默认是0. 为了防止当前打印设备DPI太高导致预览速度过于慢甚至预览时出现白屏,建议设成300左右;&lt;br&gt;
</para>
		<memo>1.批打印常用于&lt;b&gt;同一个模板、多批数据&lt;/b&gt;的集中打印;&lt;br&gt;
2.从调用该函数开始,后面调用Print( )函数打印的都归并在单个任务中,直至调用EndBatchPrint( )才将这个任务送往打印机,所以打印速度较快;&lt;br&gt;
3.如果分奇偶页打印,打印任务自动分拆成2个:奇页任务和偶页任务,调用EndBatchPrint( )后,将先打印奇页,软件会弹出对话框“正在打印奇数页,按'是'将开始打印偶数页...”,待用户换好纸张即打印偶页;&lt;br&gt;
4.如果isPreview=true, 则参数 isMultiPrintTask 无效;&lt;br&gt;
5.如果isPreview=true, 当调用EndBatchPrint( )结束后,将会弹出预览界面。此外,尽管在预览界面中也能打印,但打印精度和速度都不佳,因为此时是作为纯图片打印的 ;&lt;br&gt;
6.如果您希望在报表中能打印出在批中的页码,请在报表的表达式中使用 pageBatch( )计算函数;</memo>
		<example>AF.func("Build", "reports/aax.xml");   //打开模板&lt;br&gt;
AF.func("BeginBatchPrint", "isShareBlankPart=true");  //开始批打印&lt;br&gt;
for( ... )  {  //通常是循环&lt;br&gt;
 AF.func("SetSource", "ds1 \r\n abc.aspx?mon=" + mon);  //设置查询取数条件&lt;br&gt;
 AF.func("Calc", "");    //填充数据&lt;br&gt;
 AF.func("Print", "0");  //打印, 通常在循环的第一遍时将参数置为“1”(选择打印机)&lt;br&gt;
}&lt;br&gt;
AF.func("EndBatchPrint", "");   //终止批打印:把打印任务送往打印机
</example>
	</function>
	<function name="EndBatchPrint">
		<usage>结束批打印,将打印任务发送给打印机</usage>
	</function>
	<function name="GetProp(用途3)">
		<usage>取得工作表的打印配置属性</usage>
		<para>固定的串,为 Print 或 Printer</para>
		<return>XML串</return>
		<memo>1.打印属性比较复杂,需要您对报表的XML文件中的 PrintPage 节点进行分析;&lt;br&gt;
2.返回的XML串内容不多,因为默认的设置就不出现在XML中了;&lt;br&gt;
3.PaperNumber是打印纸号,请参考本文档“附录4.打印纸对照表”</memo>
	</function>
	<function name="SetProp(用途3)">
		<usage>设置工作表的打印配置属性</usage>
		<para>固定的串,为 Print 或 Printer</para>
		<para>XML串</para>
		<memo>更改打印参数,需要借助全局函数中的DOM函数集</memo>
		<example>//如下例子是把打印纸的左边界修改为10毫米:&lt;br&gt;
var xml=AF.func("GetProp", "Print");&lt;br&gt;
var hDOM = AF.func("dom_new", xml);  //创建DOM对象&lt;br&gt;
var hMargin = AF.func("dom_find", hDOM + "\r\n margin");   //查找节点&lt;br&gt;
AF.func("dom_SetProp", hMargin + "\r\n  left  \r\n  10");   //设置&lt;br&gt;
xml = AF.func("dom_export", hDOM);  //输出xml&lt;br&gt;
AF.func("SetProp", "Print \r\n" + xml);  //完成&lt;br&gt;
AF.func("dom_delete", hDOM);  //销毁对象&lt;br&gt;
</example>
	</function>
</category>

<category name="汇总上报模式">
	<function name="SetItemLibraryURL">
		<usage>设定指标库的URL</usage>
		<detail>设定指标库的URL,用于上报模式的设计时(运行时通常不需要执行)</detail>
		<para>URL, 或XML串,其格式请参见Report文档</para>
		<illu>请参见演示页: 40.指标库</illu>
	</function>
	<function name="SetItemAttr">
		<usage>动态修改指标的属性的值</usage>
		<para>诸如 "attr1=value1; attr2=value2; attr3=value3"这样的名-值对.</para>
		<para>可选,别名(即指标名),表示范围仅限于该类指标; 如果为空,表示对所有单元格、凡是含这些属性的值统一设置.</para>
		<return>被修改的单元格个数</return>
	</function>
	<function name="GetUploadXML">
		<usage>用于报表的汇总上报模式(WorkMode=UploadRuntime),取得当前填入内容的XML串</usage>
		<para>可选,用于当报表有多个TabOrder方案时,是否仅上报当前方案, 默认true</para>
		<return>XML串, 如果返回 "0",表示报表中的内嵌Treelist对象未通过验证</return>
		<memo>仅用于创建参数为WorkMode=UploadRuntime时</memo>
		<illu>请参见演示页: 39.填写与申报阶段</illu>
	</function>
	<function name="SetUploadXML">
		<usage>加载已上报的数据,用于报表的显示</usage>
		<para>URL, 或XML串,其格式须和GetUploadXML( )返回的XML一致 (但不需要 Cell="?" 内容)</para>
		<para>可选,格式为 autoCalc=asynch/synch/none, 表示执行完加载后立即自动执行一遍计算,asynch表示异步计算; synch是同步计算; none表示不需要计算, 默认是asynch</para>
		<example>AF.func("setUploadXML", "../getxml.do?id=332 \r\n autoCalc=none");</example>
	</function>
	<function name="GetUploadIndex">
		<usage>取得当前采用了多个TabOrder方案中的哪一个,用于上报运行时</usage>
		<return>顺序号,从0开始计数</return>
	</function>
	<function name="SetUploadIndex">
		<usage>指定采用多个TabOrder方案中的某一个,用于上报运行时</usage>
		<para>顺序号,从0开始计数</para>
	</function>
	<function name="GetUploadNames">
		<usage>取得所有TabOrder方案的名称</usage>
		<return>以回车分隔的串。如果只有单个方案,返回串有可能是空串</return>
	</function>
	<function name="GetUploadCells">
		<usage>取得有TabOrder的单元名</usage>
		<para>可选,方案的顺序号, 空串或-1表示当前方案,默认是空串</para>
		<return>以逗号分隔的单元名(如果有文本框,则为文本框的别名)串</return>
	</function>
	<function name="SelectCell(用途2)">
		<usage>用于上报运行时,直接打开第一个可输入的单元格的输入框</usage>
		<illu>请参见演示页: 39.填写与申报阶段</illu>
	</function>
</category>

<category name="简易提交(一)">
	<function name="ResetChanged">
		<usage>合并修改内容,为以后调用 GetChangedCells( ) 作准备.</usage>
	</function>
	<function name="GetChangedCells">
		<usage>取得所有被修改过的单元格.</usage>
		<return>以逗号分隔的单元名</return>
		<memo>必须在之前执行过 ResetChanged( ) 函数才能生效.</memo>
	</function>
</category>
<category name="简易提交(二)">
	<function name="CollectXML">
		<usage>获取某些单元格的公式、内容</usage>
		<para>需要获取的单元格的条件,条件为背景色或别名,如"BackColor=#00ff00"、"alias=ABC*", 别名中的星号(*)的含义是通配符.&lt;br&gt;也可以同时书写这2个条件,以分号分隔,二者将是“或”的关系.</para>
		<return>XML串</return>
	</function>
</category>
<category name="简易提交(数据源部分)">
	<function name="GetChangedXML">
		<usage>取得数据源填充区内容的XML串</usage>
		<para>可选, 可以有如下的选项,相互以分号分隔:&lt;br&gt;
&lt;b&gt;ds&lt;/b&gt; - 数据源ID, 表示取得该数据源的 "=datarow( )" 函数所在单元格的数据源填充区内容;&lt;br&gt;
&lt;b&gt;cell&lt;/b&gt; - 单元格名,或别名,表示该单元格肯定包含 "=datarow( )" 的函数,并取得数据源填充区内容;&lt;br&gt;
&lt;b&gt;DateFormat&lt;/b&gt; - 日期的格式,默认是'%Y.%m.%d',可参见&lt;a href="pub.htm#now" target=_blank&gt;公共内容中now( )函数&lt;/a&gt;的参数;&lt;br&gt;
&lt;b&gt;DateTimeFormat&lt;/b&gt; - 日期时间的格式,默认是'%Y.%m.%d %H:%M:%S',可参见&lt;a href="pub.htm#now" target=_blank&gt;公共内容中now( )函数;&lt;/a&gt;的参数&lt;br&gt;
&lt;b&gt;includeCol / excludeCol&lt;/b&gt; - 仅包含某些列/不包含某些列,二者可选其一,表示列的&lt;b&gt;范围&lt;/b&gt;. 列名之间以逗号分隔。默认是空串,表示提交所有列;&lt;br&gt;
  备注:这个“列名”是指数据源中的列名.&lt;br&gt;
&lt;b&gt;自定义属性&lt;/b&gt; - 附加在XML根节点处的属性串&lt;br&gt;
</para>
		<return>XML大串 - 成功;&lt;br&gt;空串 - 未发现数据源;&lt;br&gt;</return>
		<memo>
1.取数范围是以含"=datarow( )"函数单元格作为左上角的数据源填充区;&lt;br&gt;
2.ds 和 cell 只要指定一个就行,如果报表中只有一处"=datarow( )",则可以省略这2个参数;&lt;br&gt;
3.在让用户修改数据源内容前,通常需要调用 AF.func("callfunc", "541 \r\n 0") 函数,以保证公式不被改动 ;&lt;br&gt;
</memo>
		<example>//取得当前工作表中唯一的数据源填充区内容&lt;br&gt;
		AF.func("GetChangedXML", "");&lt;br&gt;
		//取得当前工作表中 'ds1' 数据源填充区内容&lt;br&gt;
		AF.func("GetChangedXML", "ds=ds1");&lt;br&gt;
		//同上,但XML串含附加信息&lt;br&gt;
		AF.func("GetChangedXML", "ds=ds1; org=1001;Uid=330102");&lt;br&gt;
		</example>
	</function>
</category>


<category name="权限相关">
	<function name="Swkrntpomzqa">
		<usage>限制某些交互功能</usage>
		<detail>限制某些交互功能 (也可写作 SetLimit )</detail>
		<para>可包含如下、以逗号分隔的串:&lt;br&gt; 1 -公式修改权&lt;br&gt; 2 -非公式的修改权 &lt;br&gt; 4 -格式修改权(如字体、行高列宽、对齐、隐藏等) &lt;br&gt;
 8 -行列增删权, 也可拆分成:&lt;br&gt;
   256 -行增删权&lt;br&gt;
   512 -列增删权&lt;br&gt;
 16-被保护的单元的内容修改权&lt;br&gt; 32-平衡校验修改权&lt;br&gt;
 64-数据源修改权,也可拆分成:&lt;br&gt;
   64a -新建数据源权&lt;br&gt;
   64d -删除数据源权&lt;br&gt;
   64m -修改数据源权&lt;br&gt;
 128-工作表的增删权&lt;br&gt;</para>
		<illu>请参见演示页: 6.自动计算</illu>
		<memo>1.在上报模式的运行时(workMode=UploadRunTime),不完全遵照这个限制;&lt;br&gt;
2.权限仅限制交互操作,不限制API调用;</memo>
		<example>AF.func("Swkrntpomzqa", "2, 4, 256, 64");</example>
	</function>
	<function name="addEditAbleOnly">
		<usage>添加可编辑的单元格范围</usage>
		<detail>添加可编辑的单元格范围,除了这些单元格,其它单元格都不得修改</detail>
		<para>可包含如下格式的串: level=[?]; [cell=?]; [cellArea=?]; [fixedCell=?]; [fixedCellArea=?]; [alias=?]; [aliasArea=?]; [bgColor=?]; [droplist]; [checkbox], 含义即语法如下:  &lt;br&gt;
 level - top/normal, "top" 表示独立增加权限,且级别最高,不受其它权限函数影响, 默认是normal;&lt;br&gt;
 cell - 单元格名(有多个则以逗号分隔),如"A5, B4, D4";&lt;br&gt;
 fixedCell - 同上,但位置是固定的,不受行列增删影响;&lt;br&gt;
 cellArea - 以":"分隔的2个单元格名,表示左上角到右下角的矩形区域,如“B2:D5”;&lt;br&gt;
 fixedCellArea - 同上,但位置是固定的,不受行列增删影响;&lt;br&gt;
 alias - 别名(有多个则以逗号分隔),可以含 * 的通配符;&lt;br&gt;
 aliasArea - 以":"分隔的2个别名,表示左上角到右下角的矩形区域,如“Tag12:Tag33”;&lt;br&gt;
 bgColor - 某种背景色的单元格(多个背景色之间以逗号分隔), 如“red, blud, #334400”,T 表示无背景色(透明);&lt;br&gt;
 droplist - 凡是下拉的单元格;&lt;br&gt;
 checkbox - 凡是Checkbox的单元格;&lt;br&gt;
 arrow - 左侧标记色,多个颜色之间以逗号分隔;&lt;br&gt;
</para>
		<example>AF.func("addEditAbleOnly", "cellArea=B3:B5, D3:D5; alias=KK*");  //仅如下范围的单元格可以编辑: B3:B5之间的单元格、 D3:D5之间的单元格、或别名以"KK"开头的单元格&lt;br&gt;&lt;br&gt;
		AF.func("addEditAbleOnly", "droplist; checkbox; bgColor=black");  //除了下拉的、Checkbox的、或黑色背景的单元格可编辑,其它单元格都不可编辑</example>
		<memo>当 level = normal 时: &lt;br&gt;
  1.独立于 Swkrntpomzqa( ),但和 Swkrntpomzqa( ) 同时生效,语义上有冲突时Swkrntpomzqa( )优先;&lt;br&gt;
  2.和 AddUnEditAbleOnly( )函数是互斥的,即调用AddUnEditAbleOnly( )函数后以前的设置将失效.&lt;br&gt;
  3.只能执行一遍, 如果再次执行,以前的 level=normal 的设置将失效.&lt;br&gt;
当 level = top 时: &lt;br&gt;
  1.等级高于 Swkrntpomzqa( );&lt;br&gt;
  2.允许执行多遍,设置的权限都将被保持,和其它  AddEditAbleOnly( ) / AddUnEditAbleOnly( )函数不互斥,等级仍然保持最高.&lt;br&gt;
</memo>
	</function>
	<function name="addUnEditAbleOnly">
		<usage>添加不可编辑的单元格范围</usage>
		<detail>添加不可编辑的单元格范围,除了这些单元格不可修改,其它单元格都是可以修改的</detail>
		<para>同AddEditAbleOnly函数</para>
		<memo>同AddEditAbleOnly函数</memo>
	</function>
</category>


<category name="外部统计图&lt;br&gt;(完全由API控制)">
	<function name="Chart_DeleteAllSeries">
		<usage>清除所有系列</usage>
		<para>统计图别名</para>
	</function>
	<function name="Chart_GetSeriesCount">
		<usage>取得系列数</usage>
		<para>统计图别名</para>
		<return>数字</return>
	</function>
	<function name="Chart_GetSeriesName">
		<usage>取得某系列的名称</usage>
		<para>统计图别名</para>
		<para>顺序号,从0开始计数</para>
		<return>串,空串表示已经到达末尾</return>
	</function>
	<function name="Chart_SetSeriesName">
		<usage>系列的增删改操作</usage>
		<para>统计图别名</para>
		<para>顺序号,从0开始计数</para>
		<para>系列名. 空串表示删除这个系列;如果不存在则添加;如果已经存在则修改系列名</para>
	</function>
	<function name="Chart_GetItemNames">
		<usage>取得所有数据项的名称</usage>
		<para>统计图别名</para>
		<return>以逗号分隔的数据项名</return>
	</function>
	<function name="Chart_GetItemName">
		<usage>取得某数据项的名称</usage>
		<para>统计图别名</para>
		<para>顺序号,从0开始计数</para>
		<return>数据项名</return>
	</function>
	<function name="Chart_SetItemNames">
		<usage>设置全部数据项的名称</usage>
		<para>统计图别名</para>
		<para>以逗号分隔的数据项名</para>
		<para>可选,true/false - 重构统计图/不重构,默认是true</para>
	</function>
	<function name="Chart_SetItemName">
		<usage>设置某个数据项的名称</usage>
		<para>统计图别名</para>
		<para>顺序号,从0开始计数</para>
		<para>数据项名</para>
		<para>可选,true/false - 重构统计图/不重构,默认是true</para>
	</function>
	<function name="Chart_GetValues">
		<usage>取得某系列的全部数值</usage>
		<para>统计图别名</para>
		<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
		<return>以逗号分隔的值</return>
	</function>
	<function name="Chart_GetValue">
		<usage>取得某系列的某个数值</usage>
		<para>统计图别名</para>
		<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
		<para>数据项的顺序号,或数据项名</para>
		<return></return>
	</function>
	<function name="Chart_SetValues">
		<usage>设置某系列的全部数值</usage>
		<para>统计图别名</para>
		<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
		<para>以逗号分隔的值, 值可以是数值、单元名、别名</para>
		<para>可选,true/false - 重构统计图/不重构,默认是true</para>
	</function>
	<function name="Chart_SetValue">
		<usage>设置某系列的某个数值</usage>
		<para>统计图别名</para>
		<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
		<para>数据项的顺序号,或数据项名</para>
		<para>值, 值可以是数值、单元名、别名</para>
		<para>可选,true/false - 重构统计图/不重构, 默认是true</para>
	</function>
</category>

<category name="下拉字典">
	<function name="Droplists_Get">
		<usage>取得所有下拉字典</usage>
		<para>name 或 id, 表示返回字典名 或 字典的id号</para>
		<return>以逗号分隔的串</return>
	</function>
	<function name="Droplists_GetHandle">
		<usage>取得某个下拉字典的句柄</usage>
		<para>字典名 或 字典的id号</para>
		<return>句柄串,空串表示该字典不存在</return>
		<memo>取得看句柄后,可以使用全局函数中的 “下拉List管理函数” 访问字典数据</memo>
	</function>
	<function name="Droplists_FindCells">
		<usage>取得当前工作表中使用了某个下拉字典的所有单元格</usage>
		<para>字典名 或 字典的id号</para>
		<return>以逗号分隔的单元格名</return>
	</function>
	<function name="Droplists_Delete">
		<usage>删除某个下拉字典</usage>
		<para>字典名 或 字典的id号</para>
		<para>可选,true-绝对删除, false - 如果有单元格使用了该字典就不删除, 默认是true</para>
		<return>1/0 - 成功/失败</return>
	</function>
	<function name="Droplists_Add">
		<usage>动态添加下拉字典</usage>
		<para>语法串</para>
		<return>新增字典的id号, 0表示失败,失败原因可能为name重复</return>
		<example>AF.func("Droplists_Add", "name=kk1;dataURL=../getDict.aspx");&lt;br&gt;
AF.func("Droplists_Add", "name=kk2;dataURL=<items><item key=1>男</item><item key=2>女</item></items>");&lt;br&gt;
AF.func("Droplists_Add", "name=kk3;treelistURL=customer.xml;DataCol=id;DisplayCol=name");
		</example>
	</function>
</category>


<category name="显示掩码">
	<function name="Masks_Get">
		<usage>取得所有显示掩码的id</usage>
		<return>掩码的id,相互以逗号分隔</return>
	</function>
	<function name="Mask_Get">
		<usage>取得某个显示掩码的表达式</usage>
		<para>ID号</para>
		<return>表达式</return>
	</function>
	<function name="Mask_Delete">
		<usage>删除某个显示掩码</usage>
		<para>ID号</para>
		<return>1/0 - 成功/失败</return>
	</function>
	<function name="Mask_Add">
		<usage>添加一个显示掩码</usage>
		<para>数据类型,可以是 string, int, double, date, datetime</para>
		<para>表达式</para>
		<memo>如果该掩码表达式已经存在,则返回原ID号</memo>
		<return>ID号</return>
		<example>
var id = AF.func("Mask_Add", "string \r\n =formatNum(data, '¥#,##0.00')");&lt;br&gt;
var id = AF.func("Mask_Add", "string \r\n =picture()");   //添加图片显示掩码&lt;br&gt;
var id = AF.func("Mask_Add", "string \r\n =barcode(33,0,0,0)");   //添加二维码显示掩码&lt;br&gt;
		</example>
	</function>
	<function name="Mask_FindCells">
		<usage>取得当前工作表中使用了某个显示掩码的单元格</usage>
		<para>ID号</para>
		<return>以逗号分隔的单元格名、或文本框的别名</return>
	</function>
</category>


<category name="工具条和菜单">
	<function name="SetToolbarItemImage">
		<usage>动态更改工具条中某按钮的图标</usage>
		<para>功能号</para>
		<para>图标文件的URL,如果是相对路径,则相对于当前页面</para>
		<return>1 / 0 - 成功 / 失败</return>
	</function>
	<function name="SetToolbarItemTip">
		<usage>动态更改工具条中某按钮的Tip (鼠标滑过时的文字)</usage>
		<para>功能号</para>
		<para>文字串</para>
		<return>1 / 0 - 成功 / 失败</return>
	</function>
	<function name="GetToolbarItemStatus">
		<usage>取得自定义工具条中某按钮/菜单项的状态</usage>
		<para>功能号,必须是自定义的功能号(大于等于3000)</para>
		<para>可用状态,为 Enable、Visible、Check</para>
		<return>1 / 0</return>
		<memo>enable决定按钮或菜单是否灰色显示(disable);&lt;br&gt;visible决定是否让该按钮/菜单项出现;&lt;br&gt;check比较特殊,如果是按钮,必须是style="checkbutton"类型的,决定按钮的凹陷状态;如果是菜单,则会在菜单左侧打一个勾</memo>
	</function>
	<function name="SetToolbarItemStatus">
		<usage>动态更改自定义工具条中某按钮/菜单项的状态</usage>
		<para>功能号,必须是自定义的功能号(大于等于3000)</para>
		<para>可用状态,为 Enable、Visible、Check</para>
		<para>true / false</para>
		<return>1 / 0 - 成功 / 失败</return>
		<memo>enable决定按钮或菜单是否灰色显示(disable);&lt;br&gt;visible决定是否让该按钮/菜单项出现;&lt;br&gt;check比较特殊,如果是按钮,必须是style="checkbutton"类型的,决定按钮的凹陷状态;如果是菜单,则会在菜单左侧打一个勾</memo>
	</function>
	<function name="AddMenu">
		<usage>增加自定义的弹出菜单项</usage>
		<para>串、XML串,或URL,内容的格式规范请参考“5.自定义菜单”</para>
		<para>可选,格式为LocateAt=[top/bottom], 表示自定义菜单在弹出时位于顶部还是底部,默认是bottom</para>
		<memo>只能在OnEvent(id, "MenuBeforePopup", ...)事件中执行。</memo>
		<illu>参见演示页: 9.自定义右键菜单</illu>
	</function>
	<function name="AddHotKey">
		<usage>增设快捷键</usage>
		<detail>增设快捷键。快捷键将触发HotKey事件</detail>
		<para>第一个快捷键,可以是F1至F12、字母、数字、或键的AscII码,也可再加Ctrl、Shift、Alt的组合,以'+'分隔.</para>
		<para>可选,第二个快捷键,以此类推.</para>
		<example>AF.func("AddHotKey", "F12 \r\n Ctrl+F4 \r\n Ctrl+Shift+S \r\n Alt+5 \r\n Ctrl+32");&lt;br&gt;
		分别表示了5个快捷键:F12、Ctrl+F4、Ctrl+Shift+S、Alt+5、Ctrl+空格(空格的AscII码是32)
		</example>
		<memo>并不是所有键都能用作快捷的,受制于浏览器,您需要逐个测试</memo>
	</function>
</category>

<category name="不太常用">
	<function name="AddUserFunctions">
		<usage>添加自定义函数的声明</usage>
		<para>XML文档,或XML大串</para>
	</function>
	<function name="SetBatchFunctionURL">
		<usage>指定批处理自定义函数的URL地址</usage>
		<para>URL,绝对或相对</para>
		<para>可选,每一批中最多函数个数,默认100</para>
		<para>可选,附加参数,为任意格式的字符串</para>
	</function>
	<function name="GetMemo">
		<usage>取得某自由存储区的存储串</usage>
		<para>工作表顺序号(从0开始计数),如果为空串,则表示是和工作表无关的的独立存储区</para>
		<para>存储区的ID,为任意串,但不得含逗号</para>
		<return></return>
		<memo>自由存储区的内容是保存在报表的XML中的</memo>
	</function>
	<function name="SetMemo">
		<usage>设置某自由存储区的存储串</usage>
		<para>工作表顺序号(从0开始计数),如果为空串,则表示是和工作表无关的的独立存储区</para>
		<para>存储区的ID,为任意串,但不得含逗号</para>
		<para>要储存的任意串,空串表示删除该存储区</para>
		<memo>自由存储区的内容是保存在报表的XML中的</memo>
	</function>
	<function name="GetMemos">
		<usage>取得自由存储区的所有ID</usage>
		<para>工作表顺序号(从0开始计数),如果为空串,则表示是和工作表无关的的独立存储区</para>
		<return>逗号分隔的存储区ID号</return>
		<memo>自由存储区的内容是保存在报表的XML中的</memo>
	</function>
	<function name="GetRedrawAble">
		<usage>是否能够重画</usage>
		<return>1 / 0 - 能 / 不能</return>
	</function>
	<function name="SetRedrawAble">
		<usage>设置让报表能够重画或不能重画</usage>
		<detail>设置让报表能够重画或不能重画。为了提高性能,在需要连续对报表作改动性操作(比如改数据、改属性)前关闭重画,操作完成后再开启重画.</detail>
		<para>true/false - 能 / 不能</para>
	</function>
	<function name="GetHandle">
		<usage>取得工作表、或Validation、或树列表、或内部非模式对话框的句柄</usage>
		<para>可以为串:&lt;br&gt;
		&lt;b&gt;Validation&lt;/b&gt; - 取得Validation句柄, 用于全局函数动态存取Validation;&lt;br&gt;
		&lt;b&gt;innerDialog&lt;/b&gt; - 取得内部非模式对话框的freeform的句柄;&lt;br&gt;
		&lt;b&gt;树列表的别名&lt;/b&gt; - 取得某内嵌树列表(Treelist)的句柄;&lt;br&gt;
		&lt;b&gt;工作表的序号(纯数字, 从0开始计数)&lt;/b&gt; - 取得某工作表的句柄;&lt;br&gt;
		&lt;b&gt;工作表名&lt;/b&gt; - 取得某工作表的句柄;&lt;br&gt;
		</para>
		<return>句柄串</return>
	</function>
	<function name="DisplayAsChart">
		<usage>将报表切换成仅显示统计图</usage>
		<para>统计图的别名,如果有多个别名,以逗号分隔;也可以是带星号(*)的通配符, 表示符合条件的别名; 也可以是空串,表示所有统计图(没有别名的统计图将被临时分配一个别名).</para>
		<para>freeform的URL或XML大串,该freeform必须包含一个ImageFlow对象</para>
		<memo>1.如果无参数,表示报表切换成原样(显示报表);&lt;br&gt;
2.报表包括工具条在内的整个区域全部切换成显示统计图;&lt;br&gt;
3.点击统计图的某个数据项区域,将会触发同样的report的统计图事件;&lt;br&gt;
4.alias别名和所处的工作表(WorkSheet)无关;&lt;br&gt;
5.freeform即“自由表头”,请参考相关资料;&lt;br&gt;</memo>
		<illu>请参见演示页: 33.统计图ImageFlow</illu>
	</function>
	<function name="GetCurrentChart">
		<usage>取得当前统计图(以显示统计图时)</usage>
		<memo>仅用于在调用了DisplayAsChart函数后、以统计图显示时</memo>
		<return>当前统计图别名。 如果报表中含有多工作表,则是类似 "mychart@sheet1"、"chart2@sheet2" 这种格式</return>
	</function>
	<function name="SetAutoCalc">
		<usage>设置让自动计算功能失效的最大单元格数量</usage>
		<detail>在键盘输入过程中、复制粘帖过程中,通常能自动触发计算,但如果报表太大(即单元格太多)的话,自动计算会影响性能、操作的流畅程度,为此需要设定一个阀值,一旦单元格总数超过这个数目,就自动关闭这个自动计算功能。默认值是10000(1万).</detail>
		<para>数值,0相当于就是彻底关闭自动计算</para>
		<memo>自动计算选项是一个全局开关,对整个进程都生效的</memo>
	</function>
	<function name="GetAutoCalc">
		<usage>取得自动计算选项</usage>
		<detail>取得自动计算选项,请参见 SetAutoCalc 函数</detail>
		<return>数值</return>
	</function>
	<function name="GetActiveWindow">
		<usage>取得当前主区域的窗口句柄</usage>
		<memo>不太常用,常用于和第三方软件底层交互</memo>
		<return>句柄串.</return>
	</function>
</category>
</functions>