Word encryption, one method to protect Word document, requires users to give the document a password. Without the password, encrypted document cannot be opened. Solution in this guide demonstrates how to encrypt Word document with custom password in C# and VB.NET via Spire.Doc for .NET.

Spire.Doc for .NET, specializing in performing Word processing tasks for .NET, provides a Document.Encrypt method which enables users to encrypt Word. The overload passed to this method is string password. Firstly, load the Word document which is needed to protect. Secondly, invoke Document.Encrypt method to encrypt with password. Thirdly, save the encrypt document and launch for viewing. After debugging, a dialog box pops up and requires the password. Enter the password to open the document and the document information will be shown as following to tell users that it is encrypted.

Encrypt Word Document

Download and install Spire.Doc for .NET and use the following code to encrypt Word.

[C#]
using Spire.Doc;

namespace Encryption
{
    class Program
    {
        static void Main(string[] args)
        {
            //Load Document
            Document document = new Document();
            document.LoadFromFile(@"E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx");

            //Encrypt
            document.Encrypt("eiceblue");

            //Save and Launch
            document.SaveToFile("Encryption.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("Encryption.docx");
        }
    }
}
[VB.NET]
Imports Spire.Doc

Namespace Encryption
    Friend Class Program
        Shared Sub Main(ByVal args() As String)
            'Load Document
            Dim document As New Document()
            document.LoadFromFile("E:\Work\Documents\WordDocuments\Spire.Doc for .NET.docx")

            'Encrypt
            document.Encrypt("eiceblue")

            'Save and Launch
            document.SaveToFile("Encryption.docx", FileFormat.Docx)
            System.Diagnostics.Process.Start("Encryption.docx")
        End Sub
    End Class
End Namespace

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.

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);
        }
    }
}

C#/VB.NET: Add or Remove Cell Borders in Excel

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);
        }
    }
}

C#/VB.NET: Add or Remove Cell Borders in Excel

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.

Thursday, 24 March 2022 08:36

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.

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);
        }
    }
}

C#/VB.NET: Apply Fonts to Excel Cells

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);
        }
    }
}

C#/VB.NET: Apply Fonts to Excel Cells

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);
        }
    }
}

C#/VB.NET: Apply Fonts to Excel Cells

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.

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);
        }

    }
}

C#/VB.NET: Set Background Color and Pattern for Excel Cells

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.

Tuesday, 15 March 2022 06:15

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:

  • 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);
        }
    }
}

C#/VB.NET: Add Hyperlinks to Excel

Add Image Hyperlinks to Excel in C# and VB.NET

The following are the steps to add an image hyperlink to Excel:

  • 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);
        }
    }
}

C#/VB.NET: Add Hyperlinks to Excel

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.

Tuesday, 04 January 2011 08:26

Spire.XLS for .NET Program Guide Content

Spire.XLS is a professional Excel .NET API that can be used to create, read, write, convert and print Excel files in any type of .NET application. It 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.

Chart

Smart Marker

Tuesday, 28 December 2010 07:50

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.
[C#]
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++;
                        }
                    }
                }
            }
        }
    }
}
[VB.NET]
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.

Extract Word Image

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.

Tuesday, 28 December 2010 06:45

How to Traverse a Document Tree

Spire.Doc represents a document as a tree, every document element is a node of that tree. Some nodes such as section, paragraph and table may have many child nodes. For example, a section node has several paragraph nodes, a paragraph node has many text nodes and each row is the child node of a table node. And other nodes have no child node, such as text-range, image, form-field.
If a node has child nodes, it should be an instance of Spire.Doc.Interface.ICompositeObject.
If you want to operate all the nodes, you can use the tree navigation method to visit each node.

Document Tree Traversal

The following example demonstrates how to traverse a document tree to collect all nodes and ouput the text of all text-range nodes.
[C#]
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;
        }
    }
}
          
[VB.NET]
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
          
Thursday, 03 March 2022 02:25

C#/VB.NET: Insert a Bookmark in Word

When dealing with a lengthy Word document, inserting bookmarks with different names is a convenient way to mark places in the document. Once the bookmarks are inserted, you can quickly jump to the specified places without scrolling through page after page. In this article, you will learn how to insert a bookmark into an existing Word document 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.

PM> Install-Package Spire.Doc

Insert a Bookmark into an Existing Word Document

Spire.Doc for .NET provides the Paragraph.AppendBookmarkStart(string name) and Paragraph.AppendBookmarkEnd(string name) methods to insert a bookmark with specified name into the specified paragraphs in a Word document. 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.
  • Append the start of the bookmark with specified name to the specified paragraph using Paragraph.AppendBookmarkStart(string name) method.
  • Append the end of the bookmark with specified name to the specified paragraph using Paragraph.AppendBookmarkEnd(string name) method.
  • Save the document to another file using Document. SaveToFile() method.
  • C#
  • VB.NET
using Spire.Doc;

namespace WordBookmark
{
    class Bookmark
    {
        static void Main(string[] args)
        {
            //Create a Document instance
            Document document = new Document();

            //Load a sample Word document
            document.LoadFromFile(@"C:\Users\Administrator\Desktop\test.docx");

            //Get the first section 
            Section section = document.Sections[0];

            //Insert a bookmark with specified name into the specified paragraphs
            section.Paragraphs[9].AppendBookmarkStart("SecurityTerm");
            section.Paragraphs[11].AppendBookmarkEnd("SecurityTerm");

            //Save the document to file
            document.SaveToFile("Bookmark.docx", FileFormat.Docx);
        }
    }
}

C#/VB.NET: Insert a Bookmark in Word

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.

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.

  • 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

C#/VB.NET: Add Header and Footer in Word Documents

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.