private void TransposeRange(int squareSide) { var cellsToInsert = new Dictionary <XLSheetPoint, XLCell>(); var cellsToDelete = new List <XLSheetPoint>(); var rngToTranspose = Worksheet.Range( RangeAddress.FirstAddress.RowNumber, RangeAddress.FirstAddress.ColumnNumber, RangeAddress.FirstAddress.RowNumber + squareSide - 1, RangeAddress.FirstAddress.ColumnNumber + squareSide - 1); Int32 roCount = rngToTranspose.RowCount(); Int32 coCount = rngToTranspose.ColumnCount(); for (Int32 ro = 1; ro <= roCount; ro++) { for (Int32 co = 1; co <= coCount; co++) { var oldCell = rngToTranspose.Cell(ro, co); var newKey = rngToTranspose.Cell(co, ro).Address; // new XLAddress(Worksheet, c.Address.ColumnNumber, c.Address.RowNumber); var newCell = new XLCell(Worksheet, newKey, oldCell.GetStyleId()); newCell.CopyFrom(oldCell, true); cellsToInsert.Add(new XLSheetPoint(newKey.RowNumber, newKey.ColumnNumber), newCell); cellsToDelete.Add(new XLSheetPoint(oldCell.Address.RowNumber, oldCell.Address.ColumnNumber)); } } cellsToDelete.ForEach(c => Worksheet.Internals.CellsCollection.Remove(c)); cellsToInsert.ForEach(c => Worksheet.Internals.CellsCollection.Add(c.Key, c.Value)); }
private void TransposeRange(int squareSide) { var cellsToInsert = new Dictionary<XLSheetPoint, XLCell>(); var cellsToDelete = new List<XLSheetPoint>(); var rngToTranspose = Worksheet.Range( RangeAddress.FirstAddress.RowNumber, RangeAddress.FirstAddress.ColumnNumber, RangeAddress.FirstAddress.RowNumber + squareSide - 1, RangeAddress.FirstAddress.ColumnNumber + squareSide - 1); Int32 roCount = rngToTranspose.RowCount(); Int32 coCount = rngToTranspose.ColumnCount(); for (Int32 ro = 1; ro <= roCount; ro++) { for (Int32 co = 1; co <= coCount; co++) { var oldCell = rngToTranspose.Cell(ro, co); var newKey = rngToTranspose.Cell(co, ro).Address; // new XLAddress(Worksheet, c.Address.ColumnNumber, c.Address.RowNumber); var newCell = new XLCell(Worksheet, newKey, oldCell.GetStyleId()); newCell.CopyFrom(oldCell, true); cellsToInsert.Add(new XLSheetPoint(newKey.RowNumber, newKey.ColumnNumber), newCell); cellsToDelete.Add(new XLSheetPoint(oldCell.Address.RowNumber, oldCell.Address.ColumnNumber)); } } cellsToDelete.ForEach(c => Worksheet.Internals.CellsCollection.Remove(c)); cellsToInsert.ForEach(c => Worksheet.Internals.CellsCollection.Add(c.Key, c.Value)); }