权限表中的GAMS数据

时间:2018-11-04 07:34:27

标签: gams-math

我有2个Set和一个参数,我想将这些数据导出到excel

 set
     j/1*200/
     E(i,j)
     v(i)
     a(i);
     alias(i,j);

我想让“ v”是Sheet1,在sheet2中有“ a”,在sheet3中有“ e”。 我不知道我的布景。

whice命令有用吗?

我的尝试不正确:

我的尝试

execute_unload "result.gdx"  v  a   e
execute 'gdxxrw.exe  result3.gdx o=result3.xlsx par=v  rng=Sheet1'
execute 'gdxxrw.exe  result3.gdx o=result3.xlsx par=a  rng=Sheet2'
execute 'gdxxrw.exe  result3.gdx o=result3.xlsx par=e  rng=Sheet3 '

1 个答案:

答案 0 :(得分:2)

我认为您需要更改两件事:

  • 您将v,a,e声明为集合,但尝试将它们作为参数写入Excel。您应该将“ par = v”(等)更改为“ set = v”。
  • 如果仅要指定范围的工作表名称,则需要以“!”结尾,因此请将“ rng = Sheet1”更改为“ rng = Sheet1!”。 (请参见此处:https://www.gams.com/latest/docs/T_GDXXRW.html#GDXXRW_RANGES)。

因此,总的来说,您应该可以使用以下方法:

 execute 'gdxxrw.exe  result3.gdx o=result3.xlsx set=v  rng=Sheet1!'
 execute 'gdxxrw.exe  result3.gdx o=result3.xlsx set=a  rng=Sheet2!'
 execute 'gdxxrw.exe  result3.gdx o=result3.xlsx set=e  rng=Sheet3!'

请注意,实际上您也可以在一个呼叫中做到这一点:

 execute 'gdxxrw.exe  result3.gdx o=result3.xlsx set=v  rng=Sheet1! set=a  rng=Sheet2! set=e  rng=Sheet3!'

最后一点:在GAMS中使用“执行”时,通常在调用后检查errorLevel很有用。