Example #1
0
        public void OffsetFormulasWhileCopy(Worksheet src, int fromRow, int fromColumn, int toRow, int toColumn, int rowCount, int columnCount, Dictionary <Tuple <int, int>, DataValidator> copiedValidators)
        {
            DataValidationConditionalGraph graph = null;

            rowCount    = (rowCount <= 0) ? 0 : rowCount;
            columnCount = (columnCount <= 0) ? 0 : columnCount;
            int num = toRow - fromRow;

            foreach (KeyValuePair <Tuple <int, int>, DataValidator> pair in copiedValidators)
            {
                int                   rowOffset         = num + (((pair.Key.Item1 - toRow) / rowCount) * rowCount);
                int                   columnOffset      = num + (((pair.Key.Item2 - toColumn) / columnCount) * columnCount);
                MoveVisitor           visitor           = new MoveVisitor(new CellRange(fromRow, fromColumn, rowCount, columnCount), rowOffset, columnOffset, graph._sheetRowCount, graph._sheetColumnCount, false, null, false, null, true);
                IConditionalFormula[] formulaConditions = pair.Value.FormulaConditions;
                if ((formulaConditions != null) && (formulaConditions.Length != 0))
                {
                    foreach (IConditionalFormula formula in formulaConditions)
                    {
                        CalcExpression expr = graph.Formula2Expression(formula.Formula, toRow, toColumn);
                        expr            = visitor.Visit(expr, toRow, toColumn);
                        formula.Formula = graph.Expression2Formula(expr, toRow, toColumn);
                    }
                }
            }
        }
Example #2
0
        public void Move(Worksheet src, int fromRow, int fromColumn, int toRow, int toColumn, int rowCount, int columnCount)
        {
            DataValidationConditionalGraph graph = null;
            Dictionary <CalcLocalIdentity, List <ConditionalGraph.ConditionalIdentity> > dictionary = this.GetAllFromulas(fromRow, fromColumn, rowCount, columnCount);

            this.Clear(fromRow, fromColumn, rowCount, columnCount);
            graph.Clear(toRow, toColumn, rowCount, columnCount);
            MoveVisitor visitor = new MoveVisitor(new CellRange(fromRow, fromColumn, rowCount, columnCount), toRow - fromRow, toColumn - fromColumn, graph._sheetRowCount, graph._sheetColumnCount, false, null, false, null, false);

            using (Dictionary <CalcLocalIdentity, List <ConditionalGraph.ConditionalIdentity> > .ValueCollection.Enumerator enumerator = dictionary.Values.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    foreach (ConditionalGraph.ConditionalIdentity identity in enumerator.Current)
                    {
                        CalcExpression expr = visitor.Visit(identity.Expression, toRow, toColumn);
                        ((IFormulaOperatorSource)graph).SetExpression(identity, expr);
                    }
                }
            }
        }