using System; using System.Collections.Generic; using System.Text; using System.Drawing; using HH.WMS.Utils.ExcelLibrary.BinaryFileFormat; namespace HH.WMS.Utils.ExcelLibrary.SpreadSheet { public class Cell { private object _value; private CellFormat _format; private CellStyle _style; internal SharedResource SharedResource; public static readonly Cell EmptyCell = new Cell(null); public Cell(object value) { _value = value; _format = CellFormat.General; } public Cell(object value, string formatString) { _value = value; _format = new CellFormat(CellFormatType.General, formatString); } public Cell(object value, CellFormat format) { _value = value; _format = format; } public override string ToString() { return this.StringValue; } public bool IsEmpty { get { return this == EmptyCell; } } public object Value { get { return _value; } set { if (IsEmpty) throw new Exception("Can not set value to an empty cell."); _value = value; } } public string StringValue { get { if (_value == null) { return String.Empty; } else { return _value.ToString(); } } } public DateTime DateTimeValue { get { if (_value is double) { double days = (double)_value; //Excel counts an extra day for 1900-Feb-29. In reality, 1900 is not a leap year. if (SharedResource.BaseDate == DateTime.Parse("1899-12-31") && days > 59) { days--; } return SharedResource.BaseDate.AddDays(days); } else if (_value is string) { return DateTime.Parse((string)_value); } else if (_value is DateTime) { return (DateTime)_value; } else { throw new Exception("Invalid DateTime Cell."); } } set { this._value = value; } } public string FormatString { get { return _format.FormatString; } set { _format.FormatString = value; } } public CellFormat Format { get { return _format; } set { _format = value; } } public CellStyle Style { get { return _style; } set { _style = value; } } public FONT GetFontForCharacter(UInt16 charIndex) { return WorksheetDecoder.getFontForCharacter(this, charIndex); } } }