internal static DependencyChain Create(ExcelWorksheet ws, ExcelCalculationOption options) { ws.CheckSheetType(); var depChain = new DependencyChain(); GetChain(depChain, ws.Workbook.FormulaParser.Lexer, ws.Cells, options); return(depChain); }
internal static DependencyChain Create(ExcelWorksheet ws, string Formula, ExcelCalculationOption options) { ws.CheckSheetType(); var depChain = new DependencyChain(); GetChain(depChain, ws.Workbook.FormulaParser.Lexer, ws, Formula, options); return depChain; }
internal static void DeleteRow(ExcelWorksheet ws, int rowFrom, int rows) { ws.CheckSheetType(); ValidateRow(rowFrom, rows); lock (ws) { var delRange = new ExcelAddressBase(rowFrom, 1, rowFrom + rows - 1, ExcelPackage.MaxColumns); WorksheetRangeHelper.ConvertEffectedSharedFormulasToCellFormulas(ws, delRange); DeleteCellStores(ws, rowFrom, 0, rows, ExcelPackage.MaxColumns + 1); foreach (var wsToUpdate in ws.Workbook.Worksheets) { FixFormulasDeleteRow(wsToUpdate, rowFrom, rows, ws.Name); } WorksheetRangeHelper.FixMergedCellsRow(ws, rowFrom, rows, true); foreach (var tbl in ws.Tables) { tbl.Address = tbl.Address.DeleteRow(rowFrom, rows); } foreach (var ptbl in ws.PivotTables) { if (ptbl.Address.Start.Row > rowFrom + rows) { ptbl.Address = ptbl.Address.DeleteRow(rowFrom, rows); } } //Issue 15573 foreach (ExcelDataValidation dv in ws.DataValidations) { var addr = dv.Address; if (addr.Start.Row > rowFrom + rows) { var newAddr = addr.DeleteRow(rowFrom, rows).Address; if (addr.Address != newAddr) { dv.SetAddress(newAddr); } } } var range = ws.Cells[rowFrom, 1, rowFrom + rows - 1, ExcelPackage.MaxColumns]; var effectedAddress = GetEffectedRange(range, eShiftTypeDelete.Up); DeleteFilterAddress(range, effectedAddress, eShiftTypeDelete.Up); DeleteSparkLinesAddress(range, eShiftTypeDelete.Up, effectedAddress); WorksheetRangeHelper.AdjustDrawingsRow(ws, rowFrom, -rows); } }
private static void ValidateInsertColumn(ExcelWorksheet ws, int columnFrom, int columns) { ws.CheckSheetType(); var d = ws.Dimension; if (columnFrom < 1) { throw (new ArgumentOutOfRangeException("columnFrom can't be lesser that 1")); } //Check that cells aren't shifted outside the boundries if (d != null && d.End.Column > columnFrom && d.End.Column + columns > ExcelPackage.MaxColumns) { throw (new ArgumentOutOfRangeException("Can't insert. Columns will be shifted outside the boundries of the worksheet.")); } }
internal static void DeleteRow(ExcelWorksheet ws, int rowFrom, int rows) { ws.CheckSheetType(); ValidateRow(rowFrom, rows); lock (ws) { DeleteCellStores(ws, rowFrom, 0, rows, ExcelPackage.MaxColumns + 1, true); AdjustFormulasRow(ws, rowFrom, rows); WorksheetRangeHelper.FixMergedCellsRow(ws, rowFrom, rows, true); foreach (var tbl in ws.Tables) { tbl.Address = tbl.Address.DeleteRow(rowFrom, rows); } foreach (var ptbl in ws.PivotTables) { if (ptbl.Address.Start.Row > rowFrom + rows) { ptbl.Address = ptbl.Address.DeleteRow(rowFrom, rows); } } //Issue 15573 foreach (ExcelDataValidation dv in ws.DataValidations) { var addr = dv.Address; if (addr.Start.Row > rowFrom + rows) { var newAddr = addr.DeleteRow(rowFrom, rows).Address; if (addr.Address != newAddr) { dv.SetAddress(newAddr); } } } WorksheetRangeHelper.AdjustDrawingsRow(ws, rowFrom, -rows); } }