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(); } } }