public void TestWSBool() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = (HSSFSheet)wb.CreateSheet(); NPOI.HSSF.Model.Sheet sheet = s.Sheet; WSBoolRecord record = (WSBoolRecord)sheet.FindFirstRecordBySid(WSBoolRecord.sid); // Check defaults Assert.AreEqual(true, record.AlternateExpression); Assert.AreEqual(true, record.AlternateFormula); Assert.AreEqual(false, record.Autobreaks); Assert.AreEqual(false, record.Dialog); Assert.AreEqual(false, record.DisplayGuts); Assert.AreEqual(true, record.FitToPage); Assert.AreEqual(false, record.RowSumsBelow); Assert.AreEqual(false, record.RowSumsRight); // Alter s.AlternativeExpression = (false); s.AlternativeFormula = (false); s.Autobreaks = true; s.Dialog = true; s.DisplayGuts = true; s.FitToPage = false; s.RowSumsBelow = true; s.RowSumsRight = true; // Check Assert.AreEqual(false, record.AlternateExpression); Assert.AreEqual(false, record.AlternateFormula); Assert.AreEqual(true, record.Autobreaks); Assert.AreEqual(true, record.Dialog); Assert.AreEqual(true, record.DisplayGuts); Assert.AreEqual(false, record.FitToPage); Assert.AreEqual(true, record.RowSumsBelow); Assert.AreEqual(true, record.RowSumsRight); Assert.AreEqual(false, s.AlternativeExpression); Assert.AreEqual(false, s.AlternativeFormula); Assert.AreEqual(true, s.Autobreaks); Assert.AreEqual(true, s.Dialog); Assert.AreEqual(true, s.DisplayGuts); Assert.AreEqual(false, s.FitToPage); Assert.AreEqual(true, s.RowSumsBelow); Assert.AreEqual(true, s.RowSumsRight); }
/** * Check if the cloned sheet has drawings. If yes, then allocate a new drawing group ID and * re-generate shape IDs * * @param sheet the cloned sheet */ public void CloneDrawings(Sheet sheet) { FindDrawingGroup(); if (drawingManager == null) { //this workbook does not have drawings return; } //check if the cloned sheet has drawings int aggLoc = sheet.AggregateDrawingRecords(drawingManager, false); if (aggLoc != -1) { EscherAggregate agg = (EscherAggregate)sheet.FindFirstRecordBySid(EscherAggregate.sid); EscherContainerRecord escherContainer = agg.GetEscherContainer(); if (escherContainer == null) { return; } EscherDggRecord dgg = drawingManager.GetDgg(); //register a new drawing group for the cloned sheet int dgId = drawingManager.FindNewDrawingGroupId(); dgg.AddCluster(dgId, 0); dgg.DrawingsSaved = dgg.DrawingsSaved + 1; EscherDgRecord dg = null; for (IEnumerator it = escherContainer.ChildRecords.GetEnumerator(); it.MoveNext(); ) { Object er = it.Current; if (er is EscherDgRecord) { dg = (EscherDgRecord)er; //update id of the drawing in the cloned sheet dg.Options = ((short)(dgId << 4)); } else if (er is EscherContainerRecord) { //recursively find shape records and re-generate shapeId ArrayList spRecords = new ArrayList(); EscherContainerRecord cp = (EscherContainerRecord)er; cp.GetRecordsById(EscherSpRecord.RECORD_ID, ref spRecords); for (IEnumerator spIt = spRecords.GetEnumerator(); spIt.MoveNext(); ) { EscherSpRecord sp = (EscherSpRecord)spIt.Current; int shapeId = drawingManager.AllocateShapeId((short)dgId, dg); //allocateShapeId increments the number of shapes. roll back to the previous value dg.NumShapes = (dg.NumShapes - 1); sp.ShapeId = (shapeId); } } } } }