You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic数据库类型设置及加工时长类型兼容问题咨询

解决AnyLogic中Excel整数转Double列表的类型不匹配问题

下面给你几个不用手动修改Excel列类型的可行方案:

方案1:加载数据时强制统一转换为Double类型

在读取Excel数据并赋值给产品的v_ProcessTime列表时,主动把每个列值转换为Double类型,不管原始值是整数还是小数。

假设你的Excel数据库表名为processTimes,对应工序列是op1、op2、op3,产品类的v_ProcessTime是List<Double>类型,代码可以这么写:

for (ProcessTimesRow row : processTimes) {
    Product newProduct = new Product();
    List<Double> processTimesList = new ArrayList<>();
    
    // 把每个列值转成Double,toString避免类型判断
    processTimesList.add(Double.valueOf(row.getOp1().toString()));
    processTimesList.add(Double.valueOf(row.getOp2().toString()));
    processTimesList.add(Double.valueOf(row.getOp3().toString()));
    
    newProduct.v_ProcessTime = processTimesList;
    // 将产品添加到模型的集合中
    allProducts.add(newProduct);
}

这种方法能统一处理整数和小数,彻底规避类型不匹配的问题。

方案2:修改AnyLogic Excel数据库的列类型映射

不用动Excel文件本身,直接在AnyLogic的数据库配置里指定列类型为Double:

  • 双击模型中的Excel数据库图标,打开配置窗口
  • 切换到「Columns」标签页
  • 找到对应工序时长的列,将「Type」从默认的Auto或Integer改成Double
  • 保存配置后重新加载数据,AnyLogic会自动把Excel里的整数转成9.0这样的Double值,直接存入List<Double>不会报错

这个方法最省事,不需要写额外代码,适合大多数场景。

方案3:调整自动生成的实体类字段类型

如果你的Excel数据库是通过AnyLogic自动生成实体类(比如ProcessTimesRow),检查实体类里对应工序列的字段类型:

  • 打开自动生成的实体类文件(一般在模型的database目录下)
  • 把原来的Integer类型字段改成Double
  • 保存后重新生成数据库映射,这样读取数据时会直接按Double类型处理

内容的提问来源于stack exchange,提问作者user16171092

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:55:15