Previous topicNext topic
 Gameofmir Help
Help > 游戏引擎功能系统 > 功能操作命令 >
读取Excel表格功能

读取Excel表格功能
格式: ReadExcel 表格路径 行号
参数1: 表格路径,支持相对路径和绝对路径。相对路径按当前NPC脚本目录解析,例如 ..\QuestDiary\gom.xls
参数2: 行号,从1开始。1表示读取Excel第1行。
变量: 读取后自动写入全局变量 Excel+列号,列号从0开始。Excel第1列写入<$GLOBAL(Excel0)>,第2列写入<$GLOBAL(Excel1)>,第3列写入<$GLOBAL(Excel2)>。
扩展变量: <$GLOBAL(ExcelCount)> 保存本次读取到的列数量。
说明: 读取Excel第一个工作表指定行的数据,并把该行各列内容写入GLOBAL变量。空单元格写入空字符串;本次列数少于上次时,会清空多余的旧Excel列变量,避免读到上次残留值。支持xls、xlsx等Excel可打开的表格文件。

基础例子,读取第1行前3列:
[@读取表格第1行]
#IF
#ACT
ReadExcel ..\QuestDiary\gom.xls 1
SENDMSG 0 -<$GLOBAL(Excel0)>-<$GLOBAL(Excel1)>-<$GLOBAL(Excel2)>

读取第1行第2列:
[@读取表格第1行第2列]
#IF
#ACT
ReadExcel ..\QuestDiary\gom.xls 1
SENDMSG 0 第1行第2列内容:<$GLOBAL(Excel1)>

读取指定行号:
[@读取指定行]
#IF
#ACT
MOV N0 5
ReadExcel ..\QuestDiary\gom.xls <$STR(N0)>
SENDMSG 6 第<$STR(N0)>行:<$GLOBAL(Excel0)> / <$GLOBAL(Excel1)> / <$GLOBAL(Excel2)>

配合ExcelCount判断列数量:
[@读取并显示列数]
#IF
#ACT
ReadExcel ..\QuestDiary\gom.xls 1
SENDMSG 6 本行读取列数:<$GLOBAL(ExcelCount)>
SENDMSG 6 第一列:<$GLOBAL(Excel0)>
SENDMSG 6 第二列:<$GLOBAL(Excel1)>

循环读取多行示例:
[@循环读取表格]
#IF
#ACT
MOV N0 1
WHILE N0 < 6
ReadExcel ..\QuestDiary\gom.xls <$STR(N0)>
SENDMSG 6 第<$STR(N0)>行:<$GLOBAL(Excel0)> - <$GLOBAL(Excel1)> - <$GLOBAL(Excel2)>
INC N0 1
ENDWHILE

注意事项:
1、列变量从0开始,Excel A列对应Excel0,B列对应Excel1。
2、行号从1开始,不能为0。
3、读取的是第一个工作表。
4、读取xls/xlsx需要服务器系统安装可用的Excel COM组件或兼容组件。
5、如果表格经常读取,建议控制脚本调用频率,避免频繁启动Excel进程影响性能。