如何从Excel批量读取AnyLogic日程例外日期 无需手动逐个录入
AnyLogic Schedule批量导入Excel例外日期实现方法
实现逻辑
Schedule对象本身提供了Java API可动态添加例外日期,无需手动逐个录入,你只需要先通过AnyLogic内置的Excel读取组件把假期列表读入模型,再循环调用API添加即可。
具体操作步骤
- 第一步:在画布中添加
Excel File组件,关联你保存假期的Excel文件,确保假期日期列在Excel中设置为标准日期格式。 - 第二步:在模型的启动触发逻辑(比如Main代理的
On startup代码块)中写入以下代码,替换对应参数为你自己的组件和参数即可:
// 替换为你添加的Excel File组件的名称 ExcelFile holidayExcel = excelFile; // 替换为你自己的参数:工作表名、数据起始行、日期所在列 String sheetName = "假期表"; int dataStartRow = 2; // 跳过表头行 int dateColIndex = 1; int totalRow = holidayExcel.getLastRowNum(sheetName); for (int i = dataStartRow; i <= totalRow; i++) { Date holiday = holidayExcel.getCellDate(sheetName, i, dateColIndex); // 替换为你的Schedule对象名称,第二个参数为例外日期对应的排班值,按需修改 workSchedule.addException(holiday, 0); }
- 第三步:运行模型前可新增调试日志确认读取的日期正确,避免因Excel格式问题导致导入失败。
补充说明
如果你的Excel中日期存储为字符串格式,可先使用
SimpleDateFormat工具类将字符串转换为Date类型后再调用addException方法即可。
如果需要设置例外的生效时间区间,可使用addException的重载方法,传入开始和结束两个时间参数即可。
内容的提问来源于stack exchange,提问作者w-.
相关产品推荐
相关产品推荐

