C#/VB.NET: Add or Remove Cell Borders in Excel
Cell borders refer to lines that can be added around a cell or range of cells. They can be used to serve different purposes, such as to separate sections in a worksheet, draw readers' attention to important cells, or make the worksheet look more presentable. This article will introduce how to add or remove cell borders in Excel in C# and VB.NET using Spire.XLS for .NET.
Install Spire.XLS for .NET
To begin with, you need to add the DLL files included in the Spire.XLS for .NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.XLS
Add Cell Borders in Excel in C# and VB.NET
Spire.XLS for .NET allows adding various kinds of borders to cells in Excel, such as left border, right border, top border, bottom border, diagonal borders, inside borders and outside borders.
You can add a specific border or multiple borders to individual cells or ranges of cells. In addition, you can also set different line styles and line colors for the borders. The following are the main steps to apply different kinds of cell borders with different line styles and line colors:
- Initialize an instance of the Workbook class.
- Get a specific worksheet by its index through Workbook.Worksheets[int] property.
- Get a specific cell range by its name through Worksheet.Range[string] property.
- Get specific borders (such as left, right, top, bottom and diagonal) from the Borders collection of the cell range through CellRange.Borders[BordersLineType] property.
- Set the line styles of the specific borders through IBorder.LineStyle property.
- Set the line colors of the specific borders through IBorder.Color property.
- Get a specific cell range by its name through Worksheet.Range[string] property.
- Add outside borders and/or inside borders to the cell range using CellRange.BorderAround(LineStyleType, Color) method and/or CellRange.BorderInside(LineStyleType, Color) method. Note that inside borders cannot be applied to a single cell.
- Get a specific cell range by its name through Worksheet.Range[string] property.
- Set the line styles and line colors for borders of the cell range through BordersCollection.LineStyle and BordersCollection.Color properties, then set the line style and color for diagonal borders of the cell range.
- Save the result file using Workbook.SaveToFile() method.
- C#
- VB.NET
using Spire.Xls; using Spire.Xls.Core; using System.Drawing; namespace AddCellBorders { class Program { static void Main(string[] args) { //Create a Workbook instance Workbook workbook = new Workbook(); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //Set left, right, top, bottom and diagonal up borders for cell B2 CellRange range = sheet.Range["B2"]; IBorder leftBorder = range.Borders[BordersLineType.EdgeLeft]; leftBorder.LineStyle = LineStyleType.MediumDashDotDot; leftBorder.Color = Color.Red; IBorder rightBorder = range.Borders[BordersLineType.EdgeRight]; rightBorder.LineStyle = LineStyleType.MediumDashed; rightBorder.Color = Color.Red; IBorder topBorder = range.Borders[BordersLineType.EdgeTop]; topBorder.LineStyle = LineStyleType.Medium; topBorder.Color = Color.Red; IBorder bottomBorder = range.Borders[BordersLineType.EdgeBottom]; bottomBorder.LineStyle = LineStyleType.Medium; bottomBorder.Color = Color.Red; IBorder diagonalUpBorder = range.Borders[BordersLineType.DiagonalUp]; diagonalUpBorder.LineStyle = LineStyleType.Thin; diagonalUpBorder.Color = Color.Red; //Set diagonal borders for cell C4 range = sheet.Range["C4"]; diagonalUpBorder = range.Borders[BordersLineType.DiagonalUp]; diagonalUpBorder.LineStyle = LineStyleType.Double; diagonalUpBorder.Color = Color.Blue; IBorder diagonalDownBorder = range.Borders[BordersLineType.DiagonalDown]; diagonalDownBorder.LineStyle = LineStyleType.Double; diagonalDownBorder.Color = Color.Blue; //Set outside borders for cell D6 range = sheet.Range["D6"]; range.BorderAround(LineStyleType.Double, Color.Green); //Set inside borders for cell range E8:F10 range = sheet.Range["E8:F10"]; range.BorderInside(LineStyleType.MediumDashed, Color.DarkGray); //Set inside and outside borders for cell range F12:G14 range = sheet.Range["F12:G14"]; range.BorderInside(LineStyleType.MediumDashed, Color.Pink); range.BorderAround(LineStyleType.Medium, Color.Magenta); //Set borders for cell range G16:H18 range = sheet.Range["G16:H18"]; range.Borders.LineStyle = LineStyleType.Thick; range.Borders.Color = Color.Cyan; //Set line style and line color of diagonal borders for cell range G16:H18 diagonalUpBorder = range.Borders[BordersLineType.DiagonalUp]; diagonalUpBorder.LineStyle = LineStyleType.Dotted; diagonalUpBorder.Color = Color.DarkGray; diagonalDownBorder = range.Borders[BordersLineType.DiagonalDown]; diagonalDownBorder.LineStyle = LineStyleType.Dotted; diagonalDownBorder.Color = Color.DarkGray; //Save the result file workbook.SaveToFile("AddBorders.xlsx", ExcelVersion.Version2013); } } }
Remove Cell Borders in Excel in C# and VB.NET
You can remove all borders of a cell or range of cells by setting the CellRange.Borders.LineStyle property as LineStyleType.None. The following are the details steps:
- Initialize an instance of the Workbook class.
- Load an Excel file using Workbook.LoadFromFile() method.
- Get a specific worksheet by its index through Workbook.Worksheets[int] property.
- Get a specific cell range by its name through Worksheet.Range[string] property.
- Remove the borders of the cell range by setting CellRange.Borders.LineStyle property as LineStyleType.None.
- Save the result file using Workbook.SaveToFile() method.
- C#
- VB.NET
using Spire.Xls; namespace RemoveCellBorders { class Program { static void Main(string[] args) { //Create a Workbook instance Workbook workbook = new Workbook(); //Load an Excel file workbook.LoadFromFile("AddBorders.xlsx"); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //Remove borders of cell range G16:H18 CellRange range = sheet.Range["G16:H18"]; range.Borders.LineStyle = LineStyleType.None; workbook.SaveToFile("RemoveBorders.xlsx", ExcelVersion.Version2013); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
C#/VB.NET: Apply Fonts to Excel Cells
When you’re creating or reviewing a worksheet, you may want to format text in some specific cells using font styles in order to make them stand out. For example, you can change the font type, font color, font size and make text bold. This article will show you how to apply fonts to individual cells or cell ranges by using Spire.XLS for .NET.
- Apply Different Fonts to Different Cells
- Appy Multiple Fonts in a Single Cell
- Apply a Font to a Cell Range
Install Spire.XLS for .NET
To begin with, you need to add the DLL files included in the Spire.XLS for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.XLS
Apply Different Fonts to Different Cells
Spire.XLS provides the CellRange.Style.Font property which you can use to set or change the font name, color, size and style in a cell easily. The following are the steps to apply a font style to a specific cell using Spire.XLS for .NET.
- Create a Workbook object.
- Get the first worksheet using Workbook.Worksheets[index] property.
- Get a specific cell using Worksheet.Range[int Row, int Column] property.
- Set the value of the cell using CellRange.Value property.
- Set the font name, color, size and style of the cell value through the properties under the CellRange.Value.Font object.
- Save the workbook to an Excel file using Workbook.SaveToFile() method.
- C#
- VB.NET
using Spire.Xls; using System.Drawing; namespace ApplySingleFontInCellRange { class Program { static void Main(string[] args) { //Create a Workbook object Workbook workbook = new Workbook(); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //Set font name int row = 1; sheet.Range[row, 1].Value = "Font Name"; sheet.Range[row, 2].Value = "Arial Black"; sheet.Range[row, 2].Style.Font.FontName = "Arial Black"; //Set font size sheet.Range[row += 2, 1].Value = "Font Size"; sheet.Range[row, 2].Value = "15"; sheet.Range[row, 2].Style.Font.Size = 15; //Set font color sheet.Range[row += 2, 1].Value = "Font Color"; sheet.Range[row, 2].Value = "Red"; sheet.Range[row, 2].Style.Font.Color = Color.Red; //Make text bold sheet.Range[row += 2, 1].Value = "Bold"; sheet.Range[row, 2].Value = "Bold"; sheet.Range[row, 2].Style.Font.IsBold = true; //Make text italic sheet.Range[row += 2, 1].Value = "Italic"; sheet.Range[row, 2].Value = "Italic"; sheet.Range[row, 2].Style.Font.IsItalic = true; //Underline text sheet.Range[row += 2, 1].Value = "Underline"; sheet.Range[row, 2].Value = "Underline"; sheet.Range[row, 2].Style.Font.Underline = FontUnderlineType.Single; //Strikethrough text sheet.Range[row += 2, 1].Value = "Strikethrough "; sheet.Range[row, 2].Value = "Strikethrough "; sheet.Range[row, 2].Style.Font.IsStrikethrough = true; //Auto fit column width sheet.AllocatedRange.AutoFitColumns(); //Save the workbook to an Excel file workbook.SaveToFile("ApplySingleFontInCell.xlsx", ExcelVersion.Version2016); } } }
Appy Multiple Fonts in a Single Cell
Mixing fonts in a single cell can help you emphasize some specific characters within the cell. The following are the steps to apply multiple fonts in a cell using Spire.XLS for .NET.
- Create a Workbook object.
- Get the first worksheet using Workbook.Worksheets[index] property.
- Create two ExcelFont objects using Workbook.CreateFont() method.
- Get a specific cell using Worksheet.Range[int Row, int Column] property, and set the rich text content of the cell using CellRange.RichText.Text property.
- Apply the two ExcelFont objects to the rich text using RichText.SetFont() method.
- Save the workbook to an Excel file using Workbook.SaveToFile() method.
- C#
- VB.NET
using Spire.Xls; namespace ApplyMultipleFontsInACell { class Program { static void Main(string[] args) { //Create a Workbook object Workbook workbook = new Workbook(); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //Create a font ExcelFont font1 = workbook.CreateFont(); font1.FontName = "Arial Black"; font1.KnownColor = ExcelColors.LightBlue; font1.IsBold = true; font1.Size = 13; //Create another font ExcelFont font2 = workbook.CreateFont(); font2.KnownColor = ExcelColors.Red; font2.IsBold = true; font2.IsItalic = true; font2.FontName = "Algerian"; font2.Size = 15; //Returns a RichText object from a specified cell RichText richText = sheet.Range["A1"].RichText; //Set the text of RichText object richText.Text = "Buy One, Get One Free"; //Apply the first font to specified range of characters richText.SetFont(0, 16, font1); //Apply the second font to specified range of characters richText.SetFont(17, 21, font2); //Set column width sheet.Columns[0].ColumnWidth = 33; //Save the workbook to an Excel file workbook.SaveToFile("ApplyMultipleFonts.xlsx", ExcelVersion.Version2016); } } }
Apply a Font to a Cell Range
Spire.XLS provides the CellStyle class to manage the cell formatting such as fill color, text alignment and font style. You can create a cell style and apply it to a cell range or the whole worksheet using CellRange.ApplyStyle() method and Worksheet.ApplyStyle() method, respectively. The following are the steps to apply a font to a cell range using Spire.XLS for .NET.
- Create a Workbook object.
- Load a sample Excel file using Workbook.LoadFromFile() method.
- Get the first worksheet using Workbook.Worksheets[index] property.
- Create a CellStyle object using Workbook.Styles.Add() method, and set the font style through the CellStyle.Font property.
- Apply the cell style to a cell range using CellRange.ApplyStyle() method.
- Save the workbook to another Excel file using Workbook.SaveToFile() method.
- C#
- VB.NET
using Spire.Xls; using System.Drawing; namespace ApplyFontToCellRange { class Program { static void Main(string[] args) { //Create a Workbook object Workbook workbook = new Workbook(); //Load a sample Excel file workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.xlsx"); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //Create a CellStyle object CellStyle fontStyle = workbook.Styles.Add("headerFontStyle"); //Set the font color, size and style fontStyle.Font.Color = Color.White; fontStyle.Font.IsBold = true; fontStyle.Font.Size = 12; fontStyle.HorizontalAlignment = HorizontalAlignType.Center; //Create a CellStyleFlag object, setting the FontColor, FontBold, FontSize and HorizontalAlignment properties to true CellStyleFlag flag = new CellStyleFlag(); flag.FontColor = true; flag.FontBold = true; flag.FontSize = true; flag.HorizontalAlignment = true; //Apply the cell style to header row sheet.Range[1, 1, 1, 8].ApplyStyle(fontStyle, flag); //Apply the cell style to the whole worksheet //sheet.ApplyStyle(fontStyle); //Save the workbook to another Excel file workbook.SaveToFile("ApplyFontToCellRange.xlsx", ExcelVersion.Version2016); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
C#/VB.NET: Set Background Color and Pattern for Excel Cells
By default, the cells in an Excel document are formatted with a background color of transparent. When you need to emphasize some important data in particular cells, Microsoft Excel provides the "Fill Color" formatting option to change the background color or pattern style of the cells. In this article, you will learn how to programmatically set background color and pattern style for a specified cell or cell range in Excel using Spire.XLS for .NET.
Install Spire.XLS for .NET
To begin with, you need to add the DLL files included in the Spire.XLS for .NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.XLS
Set Background Color and Pattern for Excel Cells
The detailed steps are as follows.
- Instantiate a Workbook object.
- Load a sample Excel file using Workbook.LoadFromFile() method.
- Get a specified worksheet using Workbook.Worksheets[] property.
- Get a specified cell range using Worksheet.Range[] property.
- Get the style of the specified cell range using CellRange.Style property.
- Set the background color for the specified cell range using CellStyle.Color property.
- Set the fill pattern style for the specified cell range using CellStyle.FillPattern property.
- Save the result file using Workbook.SaveToFile() method.
- C#
- VB.NET
using System.Drawing; using Spire.Xls; namespace CellBackground { class Program { static void Main(string[] args) { //Instantiate a Workbook object Workbook workbook = new Workbook(); //Load a sample Excel file workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\data.xlsx"); //Get the first worksheet Worksheet worksheet = workbook.Worksheets[0]; //Set background color for Range ["A1:E1"] and ["A2:A10"] worksheet.Range["A1:E1"].Style.Color = Color.MediumSeaGreen; worksheet.Range["A2:A10"].Style.Color = Color.LightYellow; //Set background color for cell E6 worksheet.Range["E6"].Style.Color = Color.Red; //Set pattern style for Range ["B4:D5"] worksheet.Range["B4:D5"].Style.FillPattern = ExcelPatternType.Percent125Gray; //Save the result file workbook.SaveToFile("CellBackground.xlsx", ExcelVersion.Version2013); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
C#/VB.NET: Add Hyperlinks to Excel
A hyperlink in Excel is a clickable text or an image that navigates to a specific location, such as a webpage, an existing file, an email address, or another cell in the current workbook. This article will demonstrate how to add hyperlinks to Excel in C# and VB.NET using Spire.XLS for .NET library.
Install Spire.XLS for .NET
To begin with, you need to add the DLL files included in the Spire.XLS for .NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.XLS
Add Text Hyperlinks to Excel in C# and VB.NET
The following are the steps to add a text hyperlink to Excel:
- Create an instance of Workbook class.
- Get the desired worksheet using Workbook.Worksheets[sheetIndex] property.
- Access the specific cell that you want to add hyperlink to using Worksheet.Range[cellName] property.
- Add a hyperlink to the cell using Worksheet.HyperLinks.Add() method.
- Set the type, display text and address for the hyperlink using XlsHyperLink.Type, XlsHyperLink.TextToDisplay and XlsHyperLink.Address properties.
- Autofit column width using XlsWorksheet.AutoFitColumn() method.
- Save the result file using Workbook.SaveToFile() method.
- C#
- VB.NET
using Spire.Xls; namespace AddTextHyperlinks { class Program { static void Main(string[] args) { //Create a Workbook instance Workbook workbook = new Workbook(); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //Add a text hyperlink that leads to a webpage CellRange cell1 = sheet.Range["B3"]; HyperLink urlLink = sheet.HyperLinks.Add(cell1); urlLink.Type = HyperLinkType.Url; urlLink.TextToDisplay = "Link to a website"; urlLink.Address = "https://www.google.com/"; //Add a text hyperlink that leads to an email address CellRange cell2 = sheet.Range["E3"]; HyperLink mailLink = sheet.HyperLinks.Add(cell2); mailLink.Type = HyperLinkType.Url; mailLink.TextToDisplay = "Link to an email address"; mailLink.Address = "mailto:abc@outlook.com"; //Add a text hyperlink that leads to an external file CellRange cell3 = sheet.Range["B7"]; HyperLink fileLink = sheet.HyperLinks.Add(cell3); fileLink.Type = HyperLinkType.File; fileLink.TextToDisplay = "Link to an external file"; fileLink.Address = "C:\\Users\\Administrator\\Desktop\\Report.xlsx"; //Add a text hyperlink that leads to a cell in another sheet CellRange cell4 = sheet.Range["E7"]; HyperLink linkToSheet = sheet.HyperLinks.Add(cell4); linkToSheet.Type = HyperLinkType.Workbook; linkToSheet.TextToDisplay = "Link to a cell in sheet2"; linkToSheet.Address = "Sheet2!B5"; //Add a text hyperlink that leads to a UNC address CellRange cell5 = sheet.Range["B11"]; HyperLink uncLink = sheet.HyperLinks.Add(cell5); uncLink.Type = HyperLinkType.Unc; uncLink.TextToDisplay = "Link to a UNC address"; uncLink.Address = "\\\\192.168.0.121"; //Autofit column width sheet.AutoFitColumn(2); sheet.AutoFitColumn(5); //Save the result file workbook.SaveToFile("AddTextHyperlinks.xlsx", ExcelVersion.Version2013); } } }
Add Image Hyperlinks to Excel in C# and VB.NET
The following are the steps to add an image hyperlink to Excel:
- Create an instance of Workbook class.
- Get the desired worksheet using Workbook.Worksheets[sheetIndex] property.
- Insert an image into the worksheet using Worksheet.Pictures.Add() method and set column width and row height.
- Add a hyperlink to the image using XlsBitmapShape.SetHyperLink() method.
- Save the result file using Workbook.SaveToFile() method.
- C#
- VB.NET
using Spire.Xls; namespace AddImageHyperlinks { class Program { static void Main(string[] args) { //Create a Workbook instance Workbook workbook = new Workbook(); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //Insert an image into the worksheet ExcelPicture picture = sheet.Pictures.Add(5, 3, "Logo.png"); sheet.Columns[2].ColumnWidth = 11; sheet.Rows[4].RowHeight = 60; //Add a hyperlink to the image picture.SetHyperLink("https://www.e-iceblue.com", true); //Save the result file workbook.SaveToFile("AddImageHyperlink.xlsx", ExcelVersion.Version2013); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
Spire.XLS for .NET Program Guide Content
Spire.XLS for .NET is a professional Excel .NET API that can be used to create, read, write, convert and print Excel files in any type of .NET (C#, VB.NET, ASP.NET, .NET Core, .NET 5.0, .NET 6.0, MonoAndroid and Xamarin.iOS) application. Spire.XLS for .NET offers object model Excel API for speeding up Excel programming in .NET platform - create new Excel documents from template, edit existing Excel documents and convert Excel files.
Spire.XLS for .NET enjoys good reputation in both enterprise and individual customers. These customer types include Banks, Data processing houses, Educational institutions, Government organizations, Insurance firms, Legal institutions, Postal/cargo services and etc.
Extract Images from Word in C#, VB.NET
Solution in this guide demonstrates how to extract images from an existing Word document and save them to a specified path in C# and VB.NET via Spire.Doc for .NET.
Image is one kind of document objects which belongs to paragraph items. Spire.Doc for .NET provides a DocumentObject class to store images in Document. And also provides a DocPicture class to get and set images of document. Download and Install Spire.Doc for .NET. Follow steps to extract images from Word.
- Get each Paragraph of each Section in Document.
- Get each DocumentObject of ChildObjects in Paragraph.
- If the gotten DocumentObjectType is Picture, initialize a DocPicture class instance and assign the DocumentObject as value for this instance.
- Initialize a String class instance to name extracted image instead of its original name by invoking String.Format(String format, object arg0)
- Invoke DocPictrue.Image.Save(String, ImageFormat) method to save images.
using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using System; namespace ExtractImage { class Program { static void Main(string[] args) { //Load document Document document = new Document(@"E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx"); int index = 0; //Get Each Section of Document foreach (Section section in document.Sections) { //Get Each Paragraph of Section foreach (Paragraph paragraph in section.Paragraphs) { //Get Each Document Object of Paragraph Items foreach (DocumentObject docObject in paragraph.ChildObjects) { //If Type of Document Object is Picture, Extract. if (docObject.DocumentObjectType == DocumentObjectType.Picture) { DocPicture picture = docObject as DocPicture; //Name Image String imageName = String.Format(@"images\Image-{0}.png", index); //Save Image picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png); index++; } } } } } } }
Imports Spire.Doc Imports Spire.Doc.Documents Imports Spire.Doc.Fields Namespace ExtractImage Class Program Private Shared Sub Main(args As String()) 'Load document Dim document As New Document("E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx") Dim index As Integer = 0 'Get Each Section of Document For Each section As Section In document.Sections 'Get Each Paragraph of Section For Each paragraph As Paragraph In section.Paragraphs 'Get Each Document Object of Paragraph Items For Each docObject As DocumentObject In paragraph.ChildObjects 'If Type of Document Object is Picture, Extract. If docObject.DocumentObjectType = DocumentObjectType.Picture Then Dim picture As DocPicture = TryCast(docObject, DocPicture) 'Name Image Dim imageName As [String] = [String].Format("images\Image-{0}.png", index) 'Save Image picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png) index += 1 End If Next Next Next End Sub End Class End Namespace
After debugging, all the extracted images are saved in a specified path. Open the directory, the images will be found.
Spire.Doc, an easy-to-use component to operate Word document, allows developers to fast generate, write, edit and save Word (Word 97-2003, Word 2007, Word 2010) in C# and VB.NET for .NET, Silverlight and WPF.
How to Traverse a Document Tree
Document Tree Traversal
using System; using System.Collections.Generic; using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using Spire.Doc.Interface; using Spire.Doc.Collections; namespace ExtractText { class Program { static void Main(string[] args) { //Open a word document. Document document = new Document("Sample.doc"); IList<IDocumentObject> nodes = GetAllObjects(document); foreach (IDocumentObject node in nodes) { //Judge the object type. if (node.DocumentObjectType == DocumentObjectType.TextRange) { TextRange textNode = node as TextRange; Console.WriteLine(textNode.Text); } } } private static IList<IDocumentObject> GetAllObjects(Document document) { //Create a list. List<IDocumentObject> nodes = new List<IDocumentObject>(); //Create a new queue. Queue<ICompositeObject> containers = new Queue<ICompositeObject>(); //Put the document objects in the queue. containers.Enqueue(document); while (containers.Count > 0) { ICompositeObject container = containers.Dequeue(); DocumentObjectCollection docObjects = container.ChildObjects; foreach (DocumentObject docObject in docObjects) { nodes.Add(docObject); //Judge the docObject. if (docObject is ICompositeObject) { containers.Enqueue(docObject as ICompositeObject); } } } return nodes; } } }
Imports System Imports System.Collections.Generic Imports Spire.Doc Imports Spire.Doc.Documents Imports Spire.Doc.Fields Imports Spire.Doc.Interface Imports Spire.Doc.Collections Module Module1 Sub Main() 'Open a word document. Dim document As New Document("Sample.doc") Dim nodes As IList(Of IDocumentObject)() = GetAllObjects(document) Dim containers As New Queue(Of ICompositeObject)() For Each node As IDocumentObject In nodes 'Judge the object type. If (node.DocumentObjectType = DocumentObjectType.TextRange) Then Dim textNode As TextRange = node Console.WriteLine(textNode.Text) End If Next End Sub Function GetAllObjects(ByVal document As Document) As IList(Of IDocumentObject) 'Create a list. Dim nodes As New List(Of IDocumentObject)() 'Create a new queue. Dim containers As New Queue(Of ICompositeObject)() 'Put the document objects in the queue. containers.Enqueue(document) While (containers.Count > 0) Dim container As ICompositeObject = containers.Dequeue() Dim docObjects As DocumentObjectCollection = container.ChildObjects For Each docObject As DocumentObject In docObjects nodes.Add(docObject) 'Judge the docObject. If TypeOf docObject Is ICompositeObject Then containers.Enqueue(TryCast(docObject, ICompositeObject)) End If Next End While Return nodes End Function End Module
C#: Add or Remove Bookmarks in Word Documents
Bookmarks in Microsoft Word are useful for quickly navigating to specific sections of a document. They allow you to create and name "markers" within your document that you can easily jump to. This can be particularly helpful when working with long or complex documents.
In this article, you will learn how to add and remove bookmarks in a Word document using C# and the Spire.Doc for .NET library.
- Add a Bookmark to a Paragraph in C#
- Add a Bookmark to Specific Text within a Paragraph in C#
- Remove Bookmarks from a Word Document in C#
Install Spire.Doc for .NET
To begin with, you need to add the DLL files included in the Spire.Doc for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.Doc
Add a Bookmark to a Paragraph in C#
Using Spire.Doc, you can create a bookmark for a paragraph by inserting a BookmarkStart object at the beginning of the paragraph and a BookmarkEnd object at the end of the paragraph. The space between the bookmark start and end points becomes a defined bookmark that can be referenced and accessed as needed.
The detailed steps to add a bookmark to a paragraph are as follows.
- Create a Document object.
- Load a Word document.
- Get a specific paragraph from a specified section.
- Create a BookmarkStart object using Paragraph.AppendBookmarkStart() method.
- Insert the BookmarkStart at the beginning of the selected paragraph.
- Append a BookmarkEnd object to the end of the paragraph using Paragraph.AppendBookmarkEnd() method.
- Save the document to a different Word file.
- C#
using Spire.Doc; using Spire.Doc.Documents; namespace AddBookmarkToParagraph { class Program { static void Main(string[] args) { // Create a Document object Document doc = new Document(); // Load a Word file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.docx"); // Get a specified paragraph Paragraph paragraph = doc.Sections[0].Paragraphs[2]; // Create a bookmark start BookmarkStart start = paragraph.AppendBookmarkStart("myBookmark"); // Insert it at the beginning of the paragraph paragraph.Items.Insert(0, start); // Append a bookmark end at the end of the paragraph paragraph.AppendBookmarkEnd("myBookmark"); // Save the file doc.SaveToFile("AddBookmarkToParagraph.docx", FileFormat.Docx2019); // Dispose resources doc.Dispose(); } } }
Add a Bookmark to Specific Text within a Paragraph in C#
To add a bookmark to specific text, you need first to find the text and its position within the paragraph. Then, insert a BookmarkStart object before the text and a BookmarkEnd object after the text.
The following are the steps to add a bookmark to specific text within a paragraph using Spire.Doc.
- Create a Document object.
- Load a Word document.
- Find the desired text from the document, and get its position in its owner paragraph.
- Create a BookmarkStart object using Paragraph.AppendBookmarkStart() method.
- Insert the BookmarkStart before the selected text.
- Create a BookmarkEnd object using Paragraph.AppendBookmarkEnd() method.
- Insert the BookmarkEnd object behind the selected text.
- Save the document to a different Word file.
- C#
using Spire.Doc; using Spire.Doc.Documents; namespace AddBookmarkToText { class Program { static void Main(string[] args) { // Create a Document object Document doc = new Document(); // Load a Word file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.docx"); // Specify the string to find string stringToFind = "Privacy Policy"; // Find the selected text from the document TextSelection[] finds = doc.FindAllString(stringToFind, false, true); TextSelection specificText = finds[1]; // Find the paragraph where the text is located Paragraph para = specificText.GetAsOneRange().OwnerParagraph; // Get the index of the text in the paragraph int index = para.ChildObjects.IndexOf(specificText.GetAsOneRange()); // Create a bookmark start BookmarkStart start = para.AppendBookmarkStart("myBookmark"); // Insert the bookmark start at the index position para.ChildObjects.Insert(index, start); // Create a bookmark end BookmarkEnd end = para.AppendBookmarkEnd("myBookmark"); // Insert the bookmark end at the end of the selected text para.ChildObjects.Insert(index + 2, end); // Save the document to another file doc.SaveToFile("AddBookmarkToText.docx", FileFormat.Docx2019); // Dispose resources doc.Dispose(); } } }
Remove Bookmarks from a Word Document in C#
To remove a specific bookmark or all bookmarks from a Word document, you can use the Bookmarks.Remove() method or the Bookmarks.Clear() method. The detailed steps are as follows.
- Create a Document object.
- Load a Word document.
- Get a specific bookmark from the document by its index using Document.Bookmarks[index] property.
- Remove the bookmark using Bookmarks.Remove() method.
- To remove all bookmarks at once, use Document.Bookmarks.Clear() method.
- Save the document to a different Word file.
- C#
using Spire.Doc; namespace RemoveBookmarks { class Program { static void Main(string[] args) { // Create a Document object Document doc = new Document(); // Load a Word file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Bookmarks.docx"); // Get a specific bookmark by its index Bookmark bookmark = doc.Bookmarks[0]; // Remove the bookmark doc.Bookmarks.Remove(bookmark); // Remove all bookmarks at once // doc.Bookmarks.Clear(); // Save the document. doc.SaveToFile("RemoveBookmark.docx", FileFormat.Docx2019); // Dispose resources doc.Dispose(); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
C#/VB.NET: Add Header and Footer in Word Documents
In Word documents, you can add time, date, title, reference information, page number, content description and image /logo in header or footer to enrich the document. This article shows how to add headers and footers in C# and VB.NET applications using Spire.Doc for .NET.
Install Spire.Doc for .NET
To begin with, you need to add the DLL files included in the Spire.Doc for .NET package as references in your .NET project. The DLLs files can be either downloaded from this link or installed via NuGet.
- Package Manager
PM> Install-Package Spire.Doc
Add Header and Footer
The table gives a list of main classes, properties and methods used in the operation.
Name | Description |
Document Class | Represents a Word document model. |
Document. LoadFromFile() Method | Load a Word document. |
Section Class | Represents a section in a Word document. |
Document.Sections Property | Gets document sections. |
HeaderFooter Class | Represents a header and footer model for Word. |
Section.HeadersFooters.Header Property | Gets headers/footers of current section. |
Paragraph Class | Represents a paragraph in a document. |
HeaderFooter. AddParagraph() Method | Adds paragraph at end of section. |
TextRange Class | Represents a text range. |
Paragraph.AppendText() Method | Appends text to the end of paragraph. |
Document. SaveToFile() Method | Saves the document to file in Microsoft Word or another file format. |
The following are the steps about adding header and footer.
- Create an instance of Document class.
- Load the sample document using Document.LoadFromFile(string fileName) method.
- Get the specified section of Word Document using Document.Sections Property
- Add Header
- Get header using HeadersFooters.Header property.
- Add paragraph using HeaderFooter. AddParagraph() method and set paragraph alignment.
- Append text using Paragraph.AppendText(string text) method and set font name, size, color ,etc.
- Add Footer
- Get footer using HeadersFooters.Footer proterty.
- Add paragraph and text in footer.
- Save Word document using Document. SaveToFile(string filename, FileFormat fileFormat) method.
- C#
- VB.NET
using Spire.Doc; using Spire.Doc.Documents; using System.Drawing; using Spire.Doc.Fields; namespace AddHeaderAndFooter { class Program { static void Main(string[] args) { //Create an instance of Document class Document document = new Document(); //Load a Word document document.LoadFromFile("input.docx"); //Get the first section of Word Document Section section = document.Sections[0]; //Get header via HeadersFooters.Header property HeaderFooter header = section.HeadersFooters.Header; //Add a paragraph and set paragraph alignment style Paragraph headerPara = header.AddParagraph(); headerPara.Format.HorizontalAlignment = HorizontalAlignment.Left; //Append text and set font name, size, color,etc. TextRange textrange = headerPara.AppendText("E-iceblue Co. Ltd." + "\n Your Office Development Master"); textrange.CharacterFormat.FontName = "Arial"; textrange.CharacterFormat.FontSize = 13; textrange.CharacterFormat.TextColor = Color.DodgerBlue; textrange.CharacterFormat.Bold = true; //Get footer, add paragraph and append text HeaderFooter footer = section.HeadersFooters.Footer; Paragraph footerPara = footer.AddParagraph(); footerPara.Format.HorizontalAlignment = HorizontalAlignment.Center; textrange = footerPara.AppendText("Copyright © 2021 All Rights Reserved."); textrange.CharacterFormat.Bold = false; textrange.CharacterFormat.FontSize = 11; //Save to file document.SaveToFile("output.docx", FileFormat.Docx); } } }
Imports Spire.Doc Imports Spire.Doc.Documents Imports System.Drawing Imports Spire.Doc.Fields Namespace AddHeaderAndFooter Class Program Private Shared Sub Main(args As String()) 'Create an instance of Document class Dim document As New Document() 'Load a Word document document.LoadFromFile("input.docx") 'Get the first section of Word Document Dim section As Section = document.Sections(0) 'Get header via HeadersFooters.Header property Dim header As HeaderFooter = section.HeadersFooters.Header 'Add a paragraph and set paragraph alignment style Dim headerPara As Paragraph = header.AddParagraph() headerPara.Format.HorizontalAlignment = HorizontalAlignment.Left 'Append text and set font name, size, color ,etc. Dim textrange As TextRange = headerPara.AppendText("E-iceblue Co. Ltd." + vbLf & " Your Office Development Master") textrange.CharacterFormat.FontName = "Arial" textrange.CharacterFormat.FontSize = 13 textrange.CharacterFormat.TextColor = Color.DodgerBlue textrange.CharacterFormat.Bold = True 'Get footer, add paragraph and append text Dim footer As HeaderFooter = section.HeadersFooters.Footer Dim footerPara As Paragraph = footer.AddParagraph() footerPara.Format.HorizontalAlignment = HorizontalAlignment.Center textrange = footerPara.AppendText("Copyright © 2021 All Rights Reserved.") textrange.CharacterFormat.Bold = False textrange.CharacterFormat.FontSize = 11 'Save to file document.SaveToFile("output.docx", FileFormat.Docx) End Sub End Class End Namespace
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
C#/VB.NET: Insert Images in Word
Images in Word documents are often closely related to the textual content. Compared with documents full of text, documents with images are more illustrative and attractive. In this article, you will learn how to programmatically insert images in a Word document using Spire.Doc for .NET. With this professional Word library, you can also set the image size, position as well as wrapping styles.
- Insert Images and Set their Wrapping Styles in a Word Document
- Insert an Image at a Specified Location in a Word document
Install Spire.Doc for .NET
To begin with, you need to add the DLL files included in the Spire.Doc for .NET package as references in your .NET project. The DLLs files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.Doc
Insert Images and Set their Wrapping Styles in a Word Document
Spire.Doc for .NET supports common wrapping styles such as In Line with Text, Square, Tight, Through, Top and Bottom, Behind the Text as well as In Front of Text. Below are the detailed steps to insert images and then set their wrapping styles.
- Create a Document instance.
- Load a sample Word document using Document.LoadFromFile() method.
- Get the first section of the Word Document using Document.Sections[] property.
- Get a specified paragraph of the section using Section.Paragraphs[] property.
- Load an image and insert the image in the specified paragraph using Paragraph.AppendPicture() method.
- Set the wrapping style of the image using DocPicture.TextWrappingType property.
- Save the document to another file using Document.SaveToFile() method.
- C#
- VB.NET
using System.Drawing; using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; namespace WordImage { class ImageinWord { static void Main(string[] args) { //Create a Document instance Document document = new Document(); //Load a sample Word document document.LoadFromFile("input.docx"); //Get the first section Section section = document.Sections[0]; //Get two specified paragraphs Paragraph para1 = section.Paragraphs[5]; Paragraph para2 = section.Paragraphs[9]; //Insert images in the specified paragraphs DocPicture Pic1 = para1.AppendPicture(Image.FromFile(@"C:\Users\Administrator\Desktop\pic1.jpg")); DocPicture Pic2 = para2.AppendPicture(Image.FromFile(@"C:\Users\Administrator\Desktop\pic2.png")); //Set wrapping styles to Square and Inline respectively Pic1.TextWrappingStyle = TextWrappingStyle.Square; Pic2.TextWrappingStyle = TextWrappingStyle.Inline; //Save the document to file document.SaveToFile("InsertImage.docx", FileFormat.Docx); } } }
Insert an Image at a Specified Location in a Word document
The DocPicture.HorizontalPosition and DocPicture.VerticalPosition properties offered by Spire.Doc for .NET allows you to insert an image at a specified location. The detailed steps are as follows.
- Create a Document instance.
- Load a sample Word document using Document.LoadFromFile() method.
- Get the first section of the Word Document using Document.Sections[] property.
- Get a specified paragraph of the section using Section.Paragraphs[] property.
- Load an image and insert the image to the document using Paragraph.AppendPicture() method.
- Set the horizontal and vertical position of the image using DocPicture.HorizontalPosition and DocPicture.VerticalPosition properties.
- Set the height and width of the image using DocPicture.Width and DocPicture.Height properties.
- Set the wrapping style of the image using DocPicture.TextWrappingType property.
- Save the document to another file using Document.SaveToFile() method.
- C#
- VB.NET
using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using System.Drawing; namespace InsertImage { class Program { static void Main(string[] args) { //Create a Document instance Document document = new Document(); //Load a sample Word document document.LoadFromFile("input.docx"); //Get the first section Section section = document.Sections[0]; //Load an image and insert it to the document DocPicture picture = section.Paragraphs[0].AppendPicture(Image.FromFile(@"C:\Users\Administrator\Desktop\pic.jpg")); //Set the position of the image picture.HorizontalPosition = 90.0F; picture.VerticalPosition = 50.0F; //Set the size of the image picture.Width = 150; picture.Height = 150; //Set the wrapping style to Behind picture.TextWrappingStyle = TextWrappingStyle.Behind; // Save the document to file document.SaveToFile("Insert.docx", FileFormat.Docx); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.