Build 4.0.0.91 of xlsgen adds support for creating named ranges with restricted scopes, by which is meant restricted to a single worksheet instead of all worksheets. Local scope allows to have non-unique names in each worksheet, facilitating their use.
By default any new named range has a workbook scope. Here is how to make one local to a single worksheet (C++) :
xlsgen::IXlsWorkbookPtr workbook = engine->New( L"local_namedranges.xlsx" );
xlsgen::IXlsWorksheetPtr wksht001 = workbook->AddWorksheet( L"Sheet1" );
xlsgen::IXlsWorksheetPtr wksht002 = workbook->AddWorksheet( L"Sheet2" );
xlsgen::IXlsWorksheetPtr wksht003 = workbook->AddWorksheet( L"Sheet3" );
xlsgen::IXlsRangePtr r = wksht002->NewRange(L"Sheet2!A2:A10");
r->Local = TRUE;
r->Name = L"myname_r";
xlsgen::IXlsDynamicRangePtr rr = wksht003->NewDynamicRange(L"myname_rr");
rr->Local = TRUE;
rr->Formula = L"Sheet2!A2:A10";
workbook->Close();