| using System; | 
 | using System.Collections.Generic; | 
 | using System.Linq; | 
 | using System.Text; | 
 | using OfficeOpenXml.FormulaParsing; | 
 |  | 
 | namespace OfficeOpenXml.FormulaParsing | 
 | { | 
 |     public class EpplusNameValueProvider : INameValueProvider | 
 |     { | 
 |         private 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(); | 
 |         } | 
 |     } | 
 | } |