/// <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; }