Example #1
0
        /// <summary>
        /// Добааляем новую ячейку в лист
        /// </summary>
        /// <param name="worksheet"></param>
        /// <param name="columnName"></param>
        /// <param name="rowIndex"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        private static void InsertCellInWorksheet(ExcelCellParameters cellParameters)
        {
            SheetData sheetData = cellParameters.Worksheet.GetFirstChild <SheetData>();
            // Ищем строку, либо добавляем ее
            Row row;

            if (sheetData.Elements <Row>().Where(r => r.RowIndex ==
                                                 cellParameters.RowIndex).Count() != 0)
            {
                row = sheetData.Elements <Row>().Where(r => r.RowIndex ==
                                                       cellParameters.RowIndex).First();
            }
            else
            {
                row = new Row()
                {
                    RowIndex = cellParameters.RowIndex
                };
                sheetData.Append(row);
            }
            // Ищем нужную ячейку
            Cell cell;

            if (row.Elements <Cell>().Where(c => c.CellReference.Value ==
                                            cellParameters.CellReference).Count() > 0)
            {
                cell = row.Elements <Cell>().Where(c => c.CellReference.Value ==
                                                   cellParameters.CellReference).First();
            }
            else
            {
                // Все ячейки должны быть последовательно друг за другом расположены
                // нужно определить, после какой вставлять
                Cell refCell = null;
                foreach (Cell rowCell in row.Elements <Cell>())
                {
                    if (string.Compare(rowCell.CellReference.Value,
                                       cellParameters.CellReference, true) > 0)
                    {
                        refCell = rowCell;
                        break;
                    }
                }
                Cell newCell = new Cell()
                {
                    CellReference = cellParameters.CellReference
                };
                row.InsertBefore(newCell, refCell);
                cell = newCell;
            }
            // вставляем новый текст
            cellParameters.ShareStringPart.SharedStringTable.AppendChild(new
                                                                         SharedStringItem(new Text(cellParameters.Text)));
            cellParameters.ShareStringPart.SharedStringTable.Save();
            cell.CellValue = new
                             CellValue((cellParameters.ShareStringPart.SharedStringTable.Elements <SharedStringItem>().
                                        Count() - 1).ToString());
            cell.DataType   = new EnumValue <CellValues>(CellValues.SharedString);
            cell.StyleIndex = cellParameters.StyleIndex;
        }
        private static void InsertCellInWorksheet(ExcelCellParameters cellParameters)
        {
            SheetData sheetData = cellParameters.Worksheet.GetFirstChild <SheetData>();

            Row row;

            if (sheetData.Elements <Row>().Where(r => r.RowIndex == cellParameters.RowIndex).Count() != 0)
            {
                row = sheetData.Elements <Row>().Where(r => r.RowIndex == cellParameters.RowIndex).First();
            }
            else
            {
                row = new Row()
                {
                    RowIndex = cellParameters.RowIndex
                };
                sheetData.Append(row);
            }

            Cell cell;

            if (row.Elements <Cell>().Where(c => c.CellReference.Value == cellParameters.CellReference).Count() > 0)
            {
                cell = row.Elements <Cell>().Where(c => c.CellReference.Value == cellParameters.CellReference).First();
            }
            else
            {
                Cell refCell = null;
                foreach (Cell rowCell in row.Elements <Cell>())
                {
                    if (string.Compare(rowCell.CellReference.Value, cellParameters.CellReference, true) > 0)
                    {
                        refCell = rowCell;
                        break;
                    }
                }
                Cell newCell = new Cell()
                {
                    CellReference = cellParameters.CellReference
                };
                row.InsertBefore(newCell, refCell);
                cell = newCell;
            }

            cellParameters.ShareStringPart.SharedStringTable.AppendChild(new SharedStringItem(new Text(cellParameters.Text)));
            cellParameters.ShareStringPart.SharedStringTable.Save();
            cell.CellValue  = new CellValue((cellParameters.ShareStringPart.SharedStringTable.Elements <SharedStringItem>().Count() - 1).ToString());
            cell.DataType   = new EnumValue <CellValues>(CellValues.SharedString);
            cell.StyleIndex = cellParameters.StyleIndex;
        }