Esempio n. 1
0
        private void CopyRange(ref CellRangeRef sourceRange, SheetData sheetData, ref CellRef target)
        {
            CellRef source = sourceRange.Start;
            CellRef offset = target.CalculateOffset(source);

            var cellsToCopy = FindCellsByRange(sourceRange);

            foreach (var rowGroup in cellsToCopy)
            {
                Row keyRow = rowGroup.Key;

                Row targetRow = new Row()
                {
                    RowIndex = (UInt32)(keyRow.RowIndex + offset.Row)
                };

                MoveCurrentRow((int)targetRow.RowIndex.Value);
                sheetData.InsertBefore(targetRow, currentRow);

                foreach (Cell cellToCopy in rowGroup)
                {
                    Cell targetCell = (Cell)cellToCopy.Clone();

                    targetCell.CellReference = CellRef.OffsetIt(targetCell.CellReference, offset);

                    targetRow.Append(targetCell);
                }
            }
        }
Esempio n. 2
0
        public void SetDefinedNameRange(string name, CellRangeRef value)
        {
            DefinedName definedName = (
                from item in document.WorkbookPart.Workbook.DefinedNames.Elements <DefinedName>()
                where item.Name == name
                select item).Single();

            definedName.Text = value.ToString();
        }
Esempio n. 3
0
        public CellRangeRef FindDefinedNameRange(string name)
        {
            DefinedName definedName = (
                from item in document.WorkbookPart.Workbook.DefinedNames.Elements <DefinedName>()
                where item.Name == name
                select item).Single();
            CellRangeRef range = new CellRangeRef(definedName.Text);

            return(range);
        }
Esempio n. 4
0
        public void InsertRange(CellRangeRef range)
        {
            CopyRange(ref range, currentSheetData, ref currentPosition);

            if (direction == DirectionType.TOP_TO_DOWN)
            {
                currentPosition.Row = currentPosition.Row + range.Height + 1;
            }
            else
            {
                currentPosition.Column = currentPosition.Column + range.Width + 1;
            }
        }
Esempio n. 5
0
        private IEnumerable <IGrouping <Row, Cell> > FindCellsByRange(CellRangeRef range)
        {
            Sheet sheet = FindSheetByName(range.SheetName);

            WorksheetPart workSheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheet.Id);

            SheetData sheetData = workSheetPart.Worksheet.GetFirstChild <SheetData>();

            var result = from row in sheetData.Elements <Row>()
                         where range.Start.Row <= row.RowIndex && row.RowIndex <= range.End.Row
                         let cells = row.Elements <Cell>()
                                     from cell in cells
                                     where range.Contains(new CellRef(cell.CellReference))
                                     group cell by row into cellsInRange
                                     select cellsInRange;

            return(result);
        }
Esempio n. 6
0
        public CellRangeTemplate CreateCellRangeTemplate(CellRangeRef range)
        {
            CellRangeTemplate result = new CellRangeTemplate(range);

            var cells = FindCellsByRange(range);

            foreach (var rowGroup in cells)
            {
                foreach (Cell cell in rowGroup)
                {
                    if (cell.DataType != null && cell.CellValue != null)
                    {
                        string stringValue = null;

                        switch (cell.DataType.Value)
                        {
                        case CellValues.SharedString:
                        {
                            int index = int.Parse(cell.CellValue.Text);
                            SharedStringItem stringItem = document.WorkbookPart.SharedStringTablePart.SharedStringTable.Elements <SharedStringItem>().ElementAt(index);

                            stringValue = stringItem.InnerText;
                            break;
                        }

                        case CellValues.String:
                        {
                            stringValue = cell.CellValue.Text;
                            break;
                        }
                        }

                        if (PARAM_PATTERN.IsMatch(stringValue))
                        {
                            var match     = PARAM_PATTERN.Match(stringValue);
                            var paramName = match.Groups[1].Value;
                            result.AddCell(paramName, cell);
                        }
                    }
                }
            }

            return(result);
        }
 public CellRangeTemplate(CellRangeRef range)
 {
     this.range = range;
 }
Esempio n. 8
0
        public CellRangeTemplate CreateCellRangeTemplate(string name)
        {
            CellRangeRef range = FindDefinedNameRange(name);

            return(CreateCellRangeTemplate(range));
        }
Esempio n. 9
0
        public void SetCurrentPositionByName(string definedName)
        {
            CellRangeRef range = FindDefinedNameRange(definedName);

            CurrentPosition = range.Start;
        }
Esempio n. 10
0
        public void InsertRange(string name)
        {
            CellRangeRef range = FindDefinedNameRange(name);

            InsertRange(range);
        }