/** * Checks is the supplied style is equal to this style * * @param o the style to check * @return true if the supplied style is equal to this style */ public override bool Equals(Object o) { if (o == null || !(o is XSSFCellStyle)) { return(false); } XSSFCellStyle cf = (XSSFCellStyle)o; return(_cellXf.ToString().Equals(cf.GetCoreXf().ToString())); }
/** * Clones all the style information from another * XSSFCellStyle, onto this one. This * XSSFCellStyle will then have all the same * properties as the source, but the two may * be edited independently. * Any stylings on this XSSFCellStyle will be lost! * * The source XSSFCellStyle could be from another * XSSFWorkbook if you like. This allows you to * copy styles from one XSSFWorkbook to another. */ public void CloneStyleFrom(ICellStyle source) { if (source is XSSFCellStyle) { XSSFCellStyle src = (XSSFCellStyle)source; // Is it on our Workbook? if (src._stylesSource == _stylesSource) { // Nice and easy _cellXf = src.GetCoreXf().Copy(); _cellStyleXf = src.GetStyleXf().Copy(); } else { // Copy the style try { // Remove any children off the current style, to // avoid orphaned nodes if (_cellXf.IsSetAlignment()) { _cellXf.UnsetAlignment(); } if (_cellXf.IsSetExtLst()) { _cellXf.UnsetExtLst(); } // Create a new Xf with the same contents _cellXf = src.GetCoreXf().Copy(); // bug 56295: ensure that the fills is available and set correctly CT_Fill fill = CT_Fill.Parse(src.GetCTFill().ToString()); AddFill(fill); // Swap it over _stylesSource.ReplaceCellXfAt(_cellXfId, _cellXf); } catch (XmlException e) { throw new POIXMLException(e); } // Copy the format String fmt = src.GetDataFormatString(); DataFormat = ( (new XSSFDataFormat(_stylesSource)).GetFormat(fmt) ); // Copy the font try { CT_Font ctFont = src.GetFont().GetCTFont().Clone(); XSSFFont font = new XSSFFont(ctFont); font.RegisterTo(_stylesSource); SetFont(font); } catch (XmlException e) { throw new POIXMLException(e); } } // Clear out cached details _font = null; _cellAlignment = null; } else { throw new ArgumentException("Can only clone from one XSSFCellStyle to another, not between HSSFCellStyle and XSSFCellStyle"); } }
public void TestGetSetBorderBottom() { //default values Assert.AreEqual(BorderStyle.None, cellStyle.BorderBottom); int num = stylesTable.GetBorders().Count; cellStyle.BorderBottom = (BorderStyle.Medium); Assert.AreEqual(BorderStyle.Medium, cellStyle.BorderBottom); //a new border has been Added Assert.AreEqual(num + 1, stylesTable.GetBorders().Count); //id of the Created border int borderId = (int)cellStyle.GetCoreXf().borderId; Assert.IsTrue(borderId > 0); //check Changes in the underlying xml bean CT_Border ctBorder = stylesTable.GetBorderAt(borderId).GetCTBorder(); Assert.AreEqual(ST_BorderStyle.medium, ctBorder.bottom.style); num = stylesTable.GetBorders().Count; //setting the same border multiple times should not change borderId for (int i = 0; i < 3; i++) { cellStyle.BorderBottom = (BorderStyle.Medium); Assert.AreEqual(BorderStyle.Medium, cellStyle.BorderBottom); } Assert.AreEqual((uint)borderId, cellStyle.GetCoreXf().borderId); Assert.AreEqual(num, stylesTable.GetBorders().Count); Assert.AreSame(ctBorder, stylesTable.GetBorderAt(borderId).GetCTBorder()); //setting border to none Removes the <bottom> element cellStyle.BorderBottom = (BorderStyle.None); Assert.AreEqual(num, stylesTable.GetBorders().Count); borderId = (int)cellStyle.GetCoreXf().borderId; ctBorder = stylesTable.GetBorderAt(borderId).GetCTBorder(); Assert.IsFalse(ctBorder.IsSetBottom()); }