| namespace AppsheetEpplus; | 
 |  | 
 | public class EpplusNameValueProvider : INameValueProvider { | 
 |   private readonly ExcelDataProvider _excelDataProvider; | 
 |   private ExcelNamedRangeCollection _values; | 
 |  | 
 |   public EpplusNameValueProvider(ExcelDataProvider excelDataProvider) { | 
 |     _excelDataProvider = excelDataProvider; | 
 |     _values = _excelDataProvider.GetWorkbookNameValues(); | 
 |   } | 
 |  | 
 |   public virtual bool IsNamedValue(string key, string ws) { | 
 |     if (ws != null) { | 
 |       var wsNames = _excelDataProvider.GetWorksheetNames(ws); | 
 |       if (wsNames != null && wsNames.ContainsKey(key)) { | 
 |         return true; | 
 |       } | 
 |     } | 
 |     return _values != null && _values.ContainsKey(key); | 
 |   } | 
 |  | 
 |   public virtual object GetNamedValue(string key) { | 
 |     return _values[key]; | 
 |   } | 
 |  | 
 |   public virtual void Reload() { | 
 |     _values = _excelDataProvider.GetWorkbookNameValues(); | 
 |   } | 
 | } |