$title Reading empty Cells with colMerge and reading merged Excel Ranges with cMerge (GDXXRWExample20,SEQ=122) $onText This model demonstrates the usage of the colMerge parameter when reading empty cells in the first part and the handling of merged Excel Ranges when reading with cMerge in the second part. This model is referenced in "Reading empty Cells with colMerge" resp. "Reading merged Excel Ranges with cMerge" from the GDXXRW Documentation. $offText $callTool win32.msappavail Excel $if errorlevel 1 $abort.noError "No Excel available" * Reading empty cells with colMerge * The option colMerge is useful only for the first three columns of the example data Parameter A_d 'results for the default value of colMerge (colMerge=0)' A_1 'use the non-empty value of a previous cell as the value for empty cells in the first column' A_2 'use the non-empty value of a previous cell as the value for empty cells in the first two columns' A_3 'use the non-empty value of a previous cell as the value for empty cells in the first three columns'; $onEcho > howToRead.txt par=A_d rng=colMerge!B2 rDim=3 cDim=1 par=A_1 rng=colMerge!B2 rDim=3 cDim=1 colMerge=1 par=A_2 rng=colMerge!B2 rDim=3 cDim=1 colMerge=2 par=A_3 rng=colMerge!B2 rDim=3 cDim=1 colMerge=3 $offEcho $call gdxxrw exampleData.xlsx output=colMerge.gdx @howToRead.txt trace=0 $ifE errorLevel<>0 $abort Error reading from spreadsheet using colMerge! * load the data $gdxIn colMerge.gdx $load A_d A_1 A_2 A_3 $gdxIn * alternatively open colMerge.gdx in the GAMS IDE or in GAMS Studio for a better overview * as expected, the number of empty labels is decreasing for higher values of colMerge display A_d, A_1, A_2, A_3; *------------------------------------------------------------------------------- * Reading merged Excel ranges with cMerge * All three values for the option cMerge are demonstrated Parameter B_d 'empty cells of a merged range will remain empty (default, cMerge=0)' B_1 'the merged value of a range is used for all empty cells being part of the range (affecting merged ranges in the headers only' B_2 'the merged value of a range is used for all empty cells being part of the range'; $onEcho > howToRead.txt cMerge=0 par=B_d rng=cMerge!A1 rDim=1 cDim=2 cMerge=1 par=B_1 rng=cMerge!A1 rDim=1 cDim=2 cMerge=2 par=B_2 rng=cMerge!A1 rDim=1 cDim=2 $offEcho $call gdxxrw exampleData.xlsx output=cMerge.gdx @howToRead.txt trace=0 $ifE errorLevel<>0 $abort Error reading from spreadsheet using cMerge! * load the data $gdxIn cMerge.gdx $load B_d B_1 B_2 $gdxIn * alternatively open cMerge.gdx in the GAMS IDE or in GAMS Studio for a better overview display B_d, B_1, B_2;