using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using DocumentFormat.OpenXml.Packaging;
using Ap = DocumentFormat.OpenXml.ExtendedProperties;
using Vt = DocumentFormat.OpenXml.VariantTypes;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using A = DocumentFormat.OpenXml.Drawing;

namespace IronIntel.Contractor
{
    internal class CExcelCellData
    {
        //单元格数据值
        public object Value { get; set; }

        //单元格数据类型
        public EnumValue<CellValues> DataType { get; set; }

        //单元格数据颜色
        public CellFont CFont { get; set; }

        //单元格数据格式
        public UInt32Value NumberFormatId { get; set; }
        public BooleanValue ApplyNumberFormat { get; set; }
        public StringValue FormatCode { get; set; }

        //单元格边界样式
        public CellBorder CBorder { get; set; }

        //单元格对齐方式
        public CellAlignment CAlignment { get; set; }

        //填充颜色
        public CellFill CFill { get; set; }
    }

    internal class CExcelSheet
    {
        private List<List<CExcelCellData>> _DataMatrix = new List<List<CExcelCellData>>();
        public List<List<CExcelCellData>> DataMatrix
        {
            get { return _DataMatrix; }
        }

        private List<string> _SharedStrings = new List<string>();
        public List<string> SharedStrings
        {
            get { return _SharedStrings; }
        }

        List<string> _MergeCellReferenceList = new List<string>();
        public List<string> MergeCellReferenceList
        {
            get { return _MergeCellReferenceList; }
        }

        List<DoubleValue> _WidthList = new List<DoubleValue>();
        public List<DoubleValue> WidthList
        {
            get { return _WidthList; }
        }

        Dictionary<int, DoubleValue> _RowHeightList = new Dictionary<int, DoubleValue>();
        public Dictionary<int, DoubleValue> RowHeightList
        {
            get { return _RowHeightList; }
        }
    }

    public class CExcelCellValue
    {
        public object Value { get; set; }
        public System.Drawing.Color? BackgroundColor { get; set; }
    }
}
