How to: Add Text to a Shape

  • 2 minutes to read

This topic illustrates how to add text to a shape. You can use one of the following approaches to complete this task.

Create a Text Box

Call the ShapeCollection.AddTextBox method to create a text box.

The code sample below shows how to insert, rotate and color a text box:


Shape textBox = worksheet.Shapes.AddTextBox(50, 120, 500, 100, "Spreadsheet");
textBox.Rotation = 30;

You can change the text box's geometry type by setting the ShapeGeometry.Preset property to one of the ShapeGeometryPreset values.

Add Text to a Shape

The table below lists an API used to add and format a shape text:

Member Description
Shape.ShapeText Provides access to a shape's text options.
ShapeText.Characters Returns a ShapeTextRange object that represents a shape's text range.
ShapeTextRange.AddBefore Adds a new text range before the current range.
ShapeTextRange.AddAfter Adds a new range after the current range.
ShapeTextRange.Text Defines a shape's text.
ShapeTextRange.Font Provides access to the shape text's font properties.
ShapeTextRange.ParagraphFormat Provides access to the shape text's paragraph properties.
ShapeText.VerticalAnchor Specifies the shape text's vertical alignment.
ShapeText.HorizontalAnchor Specifies the shape text's horizontal alignment.

The code sample below creates and formats a shape text to look as it does on the image below.


ShapeText shapeText = shape.ShapeText;

// Create a text range.
ShapeTextRange range = shapeText.Characters();

// Specify the shape's text.  
range.Text = "Shape ";

// Set font properties.
range.Font.Bold = true;
range.Font.Color = Color.YellowGreen;

// Add a new text range after the existing text
// and specify its font attributes.
ShapeTextRange range2 = range.AddAfter("Text");
range2.Font.Italic = true;
range2.Font.Name = "Arial";
range2.Font.Color = Color.BurlyWood;

// Define the text's vertical and horizontal alignment.
shapeText.VerticalAnchor = ShapeTextVerticalAnchorType.Center;
shapeText.HorizontalAnchor = ShapeTextHorizontalAnchorType.Center;