-
Notifications
You must be signed in to change notification settings - Fork 302
Comments (Notes)
You can add/edit/delete Comments (in later Excel versions called Notes) either via the ExcelRange class or via the Comments Property on the ExcelWorksheet class.
EPPlus supports Comments/Notes with plain as well as richtext, see examples below.
When adding/editing comments you will be working with the OfficeOpenXml.ExcelComment class. Here are the most important properties of this class:
| Property | Datatype | Description |
|---|---|---|
| Author | string | Author of the comment |
| Text | string | Plain text of the comment |
| RichText | ExcelRichTextCollection | Richtext (set Font, Font size/style, Color, etc on the whole text or different parts of it) of the comment, see the Richtext section below |
| From | ExcelVmlDrawingPosition | From position. For comments only when Visible=true |
| To | ExcelVmlDrawingPosition | To position. For comments only when Visible=true |
| Autofit | bool | Autofits the comment |
| BackgroundColor | System.Drawing.Color | Background color of the comment |
| LineStyle | eLineStyleVml | Border style |
| LineColor | System.Drawing.Color | Border color |
| LineWidth | float | Border width |
Available via the ExcelComment.RichText property, which is of the type OfficeOpenXml.Style.ExcelRichTextCollection.
| Property | Datatype | Description |
|---|---|---|
| Text | string | The plain text |
| HtmlText | string | Returns the rich text as html |
| Count | int | Number of items in the collection |
| Method | Return type | Description |
|---|---|---|
| Add(string text, bool NewParagraph=false) | ExcelRichText | Adds a rich text string to the collection |
| Clear() | void | Removes all items from the collection |
| Remove(ExcelRichText item) | void | Removes an item from the collection |
| RemoveAt(int index) | void | Removes an item from the collection by its index |
| Insert(int index, string text) | ExcelRichText | Inserts an item into the collection |
| this[int index] | ExcelRichText | Returns an item by its index |
Namespace: OfficeOpenXml.Style
| Property | Datatype | Description |
|---|---|---|
| Text | string | The plain text |
| HtmlText | string | Returns the rich text as html |
| Color | System.Drawing.Color | Color of the text |
| Size | float | Size of the font |
| Bold | bool | If true the text is bold |
| Italic | bool | If true the text is italic |
| Underline | bool | If true the text will be underlined |
| Strike | bool | If true the text will be striked out |
| FontName | string | Name of the font |
| PreserveSpace | bool | Preserves whitespace. Default is true |
using(var package = new ExcelPackage(@"c:\temp\commentstest.xlsx"))
{
var ws = package.Workbook.Worksheets.Add("comments");
//Adds comments using the range class
var comment = ws.Cells["A3"].AddComment("Jan Källman:\r\n", "JK");
comment.Font.Bold = true;
var rt = comment.RichText.Add("Here is some text that isn't bold...");
rt.Bold = false;
rt.FontName = "Helvetica";
rt.Color = Color.Purple;
comment.AutoFit = true;
//Adds a comment using the worksheet's Comments collection
var comment2 = ws.Comments.Add(ws.Cells["B3"],"Jan Källman:", "JK");
//This sets the size and position. (The position is used when the comment is visible and AutoFit isn't set to true)
comment2.From.Column = 7;
comment2.From.Row = 3;
comment2.To.Column = 16;
comment2.To.Row = 8;
comment2.BackgroundColor = Color.White;
comment2.RichText.Add("\r\nThis comment has white background and size/position set...\r\n");
}

The code below is using the workbook that was created in the Add new comments section above.
using (var package = new ExcelPackage(@"c:\temp\commentstest.xlsx"))
{
var ws = package.Workbook.Worksheets["comments"];
// Edit Comment using the range class
var comment = ws.Cells["A3"].Comment;
comment.RichText[0].Color = Color.DarkGreen;
comment.RichText[1].Color = Color.Blue;
package.Save();
}
You can also edit comments via the Comments collection on the worksheet.
using (var package = new ExcelPackage(@"c:\temp\commentstest.xlsx"))
{
var ws = package.Workbook.Worksheets["comments"];
// Edit Comment using the Comments collection on the worksheet
var comment = ws.Comments["A3"];
comment.RichText[0].Color = Color.DarkRed;
comment.RichText[1].Color = Color.Orange;
package.Save();
}
The code below is using the workbook that was created in the Add new comments section above.
using (var package = new ExcelPackage(@"c:\temp\commentstest.xlsx"))
{
var ws = package.Workbook.Worksheets["comments"];
// Remove comment in cell B3 using the Comments collection on worksheet.
ws.Comments.Remove(ws.Comments["B3"]);
package.Save();
}[Sample 3.4-C#](https://github.com/EPPlusSoftware/EPPlusSample.CSharp/blob/main/03-Styling/04-Create file system report/CreateAFileSystemReport.cs) or [Sample 3.4-VB](https://github.com/EPPlusSoftware/EPPlusSample.VB/blob/main/03-Styling/04-Create file system report/CreateAFileSystemReport.vb)
EPPlus Software AB - https://epplussoftware.com
- What is new in EPPlus 5+
- Breaking Changes in EPPlus 5
- Breaking Changes in EPPlus 6
- Breaking Changes in EPPlus 7
- Breaking Changes in EPPlus 8
- Addressing a worksheet
- Dimension/Used range
- Copying ranges/sheets
- Insert/Delete
- Filling ranges
- Sorting ranges
- Taking and skipping columns/rows
- Data validation
- Comments
- Freeze and Split Panes
- Header and Footer
- Hyperlinks
- Autofit columns
- Grouping and Ungrouping Rows and Columns
- Formatting and styling
- The ExcelRange.Text property
- Conditional formatting
- Using Themes
- Working with custom named table- or slicer- styles