valores usar trucos sheets numeros letras hoja google funcion formato duplicar condicional como calculo grid spreadsheetgear

grid - usar - trucos de hoja de calculo de google



¿Cómo agregar un marcador de triángulo a cualquier esquina de la celda de la grilla de SpreadsheetGear? (1)

Puede usar el método IShapes AddShape . Para el tipo, puede usar AutoShapeType.RightTriangle.

Aquí hay un ejemplo:

private void AddTriangleShape(SpreadsheetGear.IWorksheet worksheet, int iRow, int iCol) { SpreadsheetGear.IWorksheetWindowInfo windowInfo = worksheet.WindowInfo; // Calculate the left, top, width and height of the button by // converting row and column coordinates to points. Use fractional // values to get coordinates in between row and column boundaries. double left = windowInfo.ColumnToPoints(iCol); double top = windowInfo.RowToPoints(iRow + 0.5); double right = windowInfo.ColumnToPoints(iCol + 0.1); double bottom = windowInfo.RowToPoints(iRow + 0.9); double width = right - left; double height = bottom - top; worksheet.Shapes.AddShape(SpreadsheetGear.Shapes.AutoShapeType.RightTriangle, left, top, width, height); }

Esta es una pregunta específica de SpreadsheetGear Grid. Sé que puedes agregar un comentario a una celda y la celda obtiene un marcador triangular rojo en la esquina superior derecha automáticamente. Pero tengo la necesidad de agregar un triángulo pequeño (color diferente) a cualquier esquina de la celda para indicar algo especial. ¿Es posible hacer lo?

ACTUALIZAR: Esto es lo que obtuve por agregar un triángulo a cualquier esquina de la celda según la sugerencia de Daniel.

public void AddTriangleShapeToCorner(IWorksheet worksheet, int row, int col, CellCorners cellCorner) { const double width = 5, height = 5; double xOffset = 0, yOffset = 0; IWorksheetWindowInfo windowInfo = worksheet.WindowInfo; if (cellCorner == CellCorners.TopRight || cellCorner == CellCorners.BottomRight) { col++; xOffset = width; } if (cellCorner == CellCorners.BottomLeft || cellCorner == CellCorners.BottomRight) { row++; yOffset = height; } double top = windowInfo.RowToPoints(row) - yOffset; double left = windowInfo.ColumnToPoints(col) - xOffset; IShape shape = worksheet.Shapes.AddShape(AutoShapeType.RightTriangle, left, top, width, height); shape.Line.Visible = false; // line at top-left corner is not sharp, so turn it off. shape.Placement = Placement.Move; // make the shape move with cell. NOTE: it doesn''t work for top-right and bottom-right corners. if (cellCorner == CellCorners.TopLeft || cellCorner == CellCorners.TopRight) shape.VerticalFlip = true; if (cellCorner == CellCorners.TopRight || cellCorner == CellCorners.BottomRight) shape.HorizontalFlip = true; }