GAMS中xldump生成Excel工作表失败(只读文件报错)的解决方法
GAMS xldump 生成Excel工作表失败问题解决
问题现象
使用GAMS结合gtree输出模型结果时,仅能成功创建一个Excel工作表,另一个创建失败。输出代码如下:
$libinclude xldump Water_balance_summary Output\Annual_water_balance.xls Water_Balance_Total!A1 $libinclude xldump Water_balance_summary_F Output\Annual_water_balance.xls Water_Balance_F_Total!A1
其中Water_Balance_Total工作表始终无法在目标Excel文件中创建为独立工作表,Water_Balance_F_Total工作表可正常创建无报错。
错误信息
xllink.err文件中记录的错误内容:
Any changes made to the spreadsheet were not saved Total time = 2922 Ms GDXXRW 24.2.1 r43572 Released Dec 9, 2013 VS8 x86/MS Windows Input file : C:\path\xllink.gdx Output file: C:\path\Output\Water_Balance_Total.xls **** Unable to save XLS file: Cannot access read-only document 'Water_Balance_Total.xls'
解决方案
- 检查文件状态:确认
Output目录下是否存在Water_Balance_Total.xls文件,若存在,检查是否被Excel打开(文件被锁定)或设置为只读属性。关闭该文件或取消只读属性后重新运行模型。 - 调整输出命令顺序:将
Water_Balance_Total的输出命令放在Water_Balance_F_Total之前执行,避免后续操作导致文件锁定。 - 指定写入模式:修改xldump调用,添加
rw参数强制以可写模式打开文件:$libinclude xldump Water_balance_summary Output\Annual_water_balance.xls Water_Balance_Total!A1 rw - 升级GDXXRW组件:当前使用的GDXXRW版本为2013年发布的旧版本,存在多工作表写入的兼容性问题,建议升级到最新版GAMS,使用更新的GDXXRW工具。
- 清理残留进程:确保没有其他进程占用目标Excel文件,可通过任务管理器关闭Excel相关进程后重试。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

