示例#1
0
        internal void CreateDateCustomFilter(ePivotTableDateValueFilterType type)
        {
            _filterColumnNode.InnerXml = "<customFilters/>";
            var cf = new ExcelCustomFilterColumn(NameSpaceManager, _filterColumnNode);

            eFilterOperator t;
            var             v = ConvertUtil.GetValueForXml(Value1, _date1904);

            switch (type)
            {
            case ePivotTableDateValueFilterType.DateNotEqual:
                t = eFilterOperator.NotEqual;
                break;

            case ePivotTableDateValueFilterType.DateNewerThan:
            case ePivotTableDateValueFilterType.DateBetween:
                t = eFilterOperator.GreaterThan;
                break;

            case ePivotTableDateValueFilterType.DateNewerThanOrEqual:
                t = eFilterOperator.GreaterThanOrEqual;
                break;

            case ePivotTableDateValueFilterType.DateOlderThan:
            case ePivotTableDateValueFilterType.DateNotBetween:
                t = eFilterOperator.LessThan;
                break;

            case ePivotTableDateValueFilterType.DateOlderThanOrEqual:
                t = eFilterOperator.LessThanOrEqual;
                break;

            default:
                t = eFilterOperator.Equal;
                break;
            }

            var item1 = new ExcelFilterCustomItem(v, t);

            cf.Filters.Add(item1);

            if (type == ePivotTableDateValueFilterType.DateBetween)
            {
                cf.And = true;
                cf.Filters.Add(new ExcelFilterCustomItem(ConvertUtil.GetValueForXml(Value2, _date1904), eFilterOperator.LessThanOrEqual));
            }
            else if (type == ePivotTableDateValueFilterType.DateNotBetween)
            {
                cf.And = false;
                cf.Filters.Add(new ExcelFilterCustomItem(ConvertUtil.GetValueForXml(Value2, _date1904), eFilterOperator.GreaterThan));
            }
            _filter = cf;
        }
        public ExcelPivotTableFilter AddDateValueFilter(ePivotTableDateValueFilterType type, DateTime value1, DateTime?value2 = null)
        {
            if (value2.HasValue == false &&
                (type == ePivotTableDateValueFilterType.DateBetween ||
                 type == ePivotTableDateValueFilterType.DateNotBetween))
            {
                throw new ArgumentNullException("value2", "Between filters require two values");
            }
            ExcelPivotTableFilter filter = CreateFilter();

            filter.Type   = (ePivotTableFilterType)type;
            filter.Value1 = value1;
            filter.Value2 = value2;
            filter.CreateDateCustomFilter(type);

            filter.Filter.Save();
            _filters.Add(filter);
            return(filter);
        }