blob: 552848774fe3ba58d355bfe0707487ff04de6e74 [file] [log] [blame]
using OfficeOpenXml.FormulaParsing.LexicalAnalysis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OfficeOpenXml.FormulaParsing
{
/// <summary>
/// This class should be implemented to be able to deliver excel data
/// to the formula parser.
/// </summary>
public abstract class ExcelDataProvider : IDisposable
{
public interface ICellInfo : IEnumerator<ICellInfo>, IEnumerable<ICellInfo>
{
string Address { get; }
int Row { get; }
int Column { get; }
string Formula { get; }
object Value { get; }
double ValueDouble { get; }
double ValueDoubleLogical { get; }
bool IsHiddenRow { get; }
bool IsEmpty { get; }
bool IsMulti { get; }
bool NextCell();
IList<Token> Tokens { get; }
int GetNCells();
}
public interface INameInfo
{
ulong Id { get; set; }
string Name { get; set; }
string Formula { get; set; }
IList<Token> Tokens { get; }
object Value { get; set; }
}
/// <summary>
/// Returns the names of all worksheet names
/// </summary>
/// <returns></returns>
public abstract ExcelNamedRangeCollection GetWorksheetNames();
/// <summary>
/// Returns all defined names in a workbook
/// </summary>
/// <returns></returns>
public abstract ExcelNamedRangeCollection GetWorkbookNameValues();
/// <summary>
/// Returns values from the required range.
/// </summary>
/// <param name="address">An Excel address</param>
/// <returns>values from the required cells</returns>
public abstract ICellInfo GetRange(string worksheetName, int row, int column, string address);
public abstract INameInfo GetName(string worksheet, string name);
public abstract IEnumerable<object> GetRangeValues(string address);
public abstract string GetRangeFormula(string worksheetName, int row, int column);
public abstract List<Token> GetRangeFormulaTokens(string worksheetName, int row, int column);
public abstract bool IsRowHidden(string worksheetName, int row);
///// <summary>
///// Returns a single cell value
///// </summary>
///// <param name="address"></param>
///// <returns></returns>
//public abstract object GetCellValue(int sheetID, string address);
/// <summary>
/// Returns a single cell value
/// </summary>
/// <param name="row"></param>
/// <param name="col"></param>
/// <returns></returns>
public abstract object GetCellValue(string sheetName, int row, int col);
///// <summary>
///// Sets the value on the cell
///// </summary>
///// <param name="address"></param>
///// <param name="value"></param>
//public abstract void SetCellValue(string address, object value);
/// <summary>
/// Use this method to free unmanaged resources.
/// </summary>
public abstract void Dispose();
/// <summary>
/// Max number of columns in a worksheet that the Excel data provider can handle.
/// </summary>
public abstract int ExcelMaxColumns { get; }
/// <summary>
/// Max number of rows in a worksheet that the Excel data provider can handle
/// </summary>
public abstract int ExcelMaxRows { get; }
public abstract object GetRangeValue(string worksheetName, int row, int column);
}
}