不同的 GAMS 数据 sheet

data of GAMS in deffrent sheet

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

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

我想让 'v' 在工作表 1 中,'a' 在工作表 2 中,'e' 在工作表 3 中。 我不知道我这组的 rng .

哪个命令有用?

我的尝试不正确:

我的尝试

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 '

我认为你需要改变两件事:

  • 您将 v、a、e 声明为集合,但试图将它们作为参数写入 Excel。您应该将 'par=v' (等)更改为 'set=v'.
  • 如果您只想指定范围的 sheet 名称,它需要以 '!' 结尾,因此将 '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 中使用 'execute' 时,在调用后立即检查 errorLevel 通常很有用。