Wednesday, 10 December 2014 08:17

How to add table with filter in Excel

Auto Filter is the most convenient way to select the data we want from a large amount of the data in an excel data table. With the help of Spire.XLS for .NET, developers can use the method ListObjects to filter the data and format it as a table. This article will focus on show you how to add table with filter in Excel.

Step 1: Create an excel document and load the Excel from file:

Workbook workbook = new Workbook();
workbook.LoadFromFile("DataTable.xlsx");

Step 2: Gets the first worksheet in the Excel file

Worksheet sheet = workbook.Worksheets[0];

Step 3: Create a List Object named in Table

sheet.ListObjects.Create("Table", sheet.Range[1, 1, sheet.LastRow, sheet.LastColumn]);

Step 4: Set the BuiltInTableStyle for List object.

sheet.ListObjects[0].BuiltInTableStyle = TableBuiltInStyles.TableStyleLight9;

Step 5: Save the document to file.

workbook.SaveToFile("Filter.xlsx", ExcelVersion.Version2010);

Effective screenshot after the date has been auto filtered:

How to filter data in Excel in C#

Full codes:

namespace Excelfilter
{
    class Program
    {
        static void Main(string[] args)
        {
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("DataTable.xlsx");

            Worksheet sheet = workbook.Worksheets[0];

            sheet.ListObjects.Create("Table", sheet.Range[1, 1, sheet.LastRow, sheet.LastColumn]);

            sheet.ListObjects[0].BuiltInTableStyle = TableBuiltInStyles.TableStyleLight9;

            workbook.SaveToFile("Filter.xlsx", ExcelVersion.Version2010);
        }
    }
}

This article introduces how to export Word file pages as png images in Windows Forms Application using Spire.DocViewer. Let’s see detailed steps.

First, download Spire.DocViewer, add DocViewer Control to VS Toolbox.

Export Word File as Image using Spire.DocViewer

Then create a Windows Forms Application, design your Form1 as below.

  • Add 'Open Document' button to open an existing Word file.
  • Add two check boxes and two text boxes, which are designed for choosing a range of pages to do the conversion.
  • Add 'Save to Image' button to save selected pages as images.
  • Drag 'DocDocumentViewer Control' into Form1, which is used to display Word document.

Export Word File as Image using Spire.DocViewer

Code Snippet:

Step 1: Create an OpenFileDialog to select the correct file type that you want to load. If you try to open with another file type except .doc and .docx, error message 'Cannot detect current file type' will appear.

       private void btnOpen_Click(object sender, EventArgs e)
        {
            //Open a Doc Document
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter="Word97-2003 files(*.doc)|*.doc|Word2007-2010 files (*.docx)|*.docx|All files (*.*)|*.*";
            dialog.Title="Select a DOC file";
            dialog.Multiselect=false;
            dialog.InitialDirectory=System.IO.Path.GetFullPath(@"..\..\..\..\..\..\Data");           
           
            DialogResult result = dialog.ShowDialog();
            if (result==DialogResult.OK)
            {
                try
                {
                    // Load doc document from file.
                    this.docDocumentViewer1.LoadFromFile(dialog.FileName);
                    this.textBox2.Text = this.docDocumentViewer1.PageCount.ToString();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Step 2: The code behind 'Save to Image' button enables users to export the specified pages (from textbox1 to textBox2) as Bitmapsource, then convert Bitmapsource to images.

        private void btnSaveImage_Click(object sender, EventArgs e)
        {
            this.Enabled = false;
            bitMap.Clear();
            try
            {
                if (ckbFrom.Checked && ckbTo.Checked)
                {
                    try
                    {
                        int startIndex = 0;
                        int.TryParse(textBox1.Text, out startIndex);
                        m_CurrentPageNum = startIndex;
                        int endIndex = 0;
                        int.TryParse(textBox2.Text, out endIndex);

                        // Exports the specified pages as Images
                        Image[] bitmapsource = this.docDocumentViewer1.SaveImage((ushort)(startIndex), (ushort)(endIndex));
                        SaveImageToFile(bitmapsource);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else if (ckbFrom.Checked && !ckbTo.Checked)
                {
                    try
                    {
                        int currepageIndex = 0;
                        int.TryParse(textBox1.Text, out currepageIndex);
                        m_CurrentPageNum = currepageIndex;
                        //Saves the specified page as Image
                        Image bitmapsource = this.docDocumentViewer1.SaveImage((ushort)(currepageIndex));
                        SaveImageToFile(new Image[] { bitmapsource });
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            catch { };
            this.Enabled = true;
        }

Step 3: In step 2, SaveImageToFile() has been invoked. This part creates two customized methods SaveImageToFile() and WriteImageFile(), which is meant to save Bitmapsource as png images with the page index as its file name.

       private void SaveImageToFile(Image[] bitmpaSource)
        {
            int startIndex = 1;
            int.TryParse(textBox1.Text, out startIndex);
            foreach (Image bitmap in bitmpaSource)
            {
                WriteImageFile(bitmap, startIndex);
                startIndex++;
            }
        }

        // BitmapSource Write to File
        private void WriteImageFile(Image bitMapImg, int currentPageIndex)
        {
            try
            {
                if (bitMapImg != null)
                {
                    string FullfileName = currentPageIndex.ToString() + ".png";

                    bitMapImg.Save(FullfileName, System.Drawing.Imaging.ImageFormat.Png);
                    bitMap.Add(FullfileName, bitMapImg);
                }
            }
            catch (Exception ex)
            {
#if DEBUG
                System.Diagnostics.Debug.WriteLine(ex.Message + ex.Source);
#endif
            }
        }

Debug the code, you'll get a Windows application as designed. Here, I open a sample Word file and select page 1 to page 11, selected pages will be saved as images in bin folder by clicking 'Save to Image'.

Export Word File as Image using Spire.DocViewer

This article presents how to create a Windows Forms Application to open a Word file and convert it to PDF format using Spire.DocViewer. In fact, conversion from Word to HTML, RTF, DOC, DOCX are also supported with this DocViewer control. You can try almost the same way demonstrated in the following section to convert Word to any other format.

First of all, download Spire.DocViewer, add DocViewer Control to VS Toolbox.

Save Word File to PDF using Spire.DocViewer

Then create a Windows Forms application, design your Form1 as below.

  • Add 'Open' button to open a file from existing Word document.
  • Add 'Close' button to shut down the open file.
  • Add 'ToPDF' button to save Word file as PDF format.
  • Drag 'DocDocumentViewer Control' into Form1, which is used to display Word document.

Save Word File to PDF using Spire.DocViewer

Code Snippet:

Step 1: Initialize components in Form1.

       public Form1()
       {
          InitializeComponent(); 
       }

Step 2: Create an OpenFileDialog to select the correct file type that we want to load, otherwise error message 'Cannot detect current file type' will appear.

       private void bntOpen_Click(object sender, EventArgs e)
        {
            //Open a doc document          
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Word97-2003 files(*.doc)|*.doc|Word2007-2010 files (*.docx)|*.docx|All files (*.*)|*.*";
            dialog.Title = "Select a DOC file";
            dialog.Multiselect = false;
            dialog.InitialDirectory = System.IO.Path.GetFullPath(@"..\..\..\..\..\..\Data");

            DialogResult result = dialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                try
                {
                    this.docDocumentViewer1.LoadFromFile(dialog.FileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Step 3: In the 'ToPDF' button click event, create a SaveFileDialog, set filter as PDF type, then call DocDocumentViewer.SaveAs() method to save Word as PDF with customized file name.

       private void btnSaveToPdf_Click(object sender, EventArgs e)
        {
            SaveFileDialog savefile = new SaveFileDialog();
            savefile.Filter = "Pdf Document(*.pdf)|*.pdf";
            savefile.Title = "Save";

            DialogResult result = savefile.ShowDialog();
            if (result == DialogResult.OK)
            {
                try
                {
                    //Save PDF documetns
                    this.docDocumentViewer1.SaveAs(savefile.FileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Step 4: Close the open file.

        private void btnClose_Click(object sender, EventArgs e)
        {
            //Close current doc document.
            this.docDocumentViewer1.CloseDocument();
        }

After debugging the code, I opened a sample Word file. The save dialog box will pop up by clicking 'ToPDF' button.

Save Word File to PDF using Spire.DocViewer

This article presents how to create a Windows Forms application to open and close your Word files using Spire.DocViewer component. Detailed steps would be as follows:

First of all, download Spire.DocViewer, add DocViewer Control to VS Toolbox.

How to Open and Close Word Files using Spire.DocViewer

Then create a Windows Forms application, design your Form1 as below.

  • Add 'Open from file' button to open a file from existing Word document.
  • Add 'Open from stream' button to load a Word file from steam.
  • Add 'Close' button to shut down the open file.
  • Drag 'DocDocumentViewer Control' into Form1, which is used to display Word document.

How to Open and Close Word Files using Spire.DocViewer

Code Snippet:

Step 1: Initialize components in Form1.

        System.IO.FileStream stream;
        public Form1()
        {
            InitializeComponent();
          
        }

Step 2: Create an OpenFileDialog to select the correct file type that we want to load, otherwise error message 'Cannot detect current file type' will occur.

private void btnOpen_Click(object sender, EventArgs e)
        {
            //open a DOC document
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Word97-2003 files(*.doc)|*.doc|Word2007-2010 files (*.docx)|*.docx|All files (*.*)|*.*";
            dialog.Title = "Select a DOC file";
            dialog.Multiselect = false;
            dialog.InitialDirectory = System.IO.Path.GetFullPath(@"..\..\..\..\..\..\Data");

            DialogResult result = dialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                try
                {
                    //Load DOC document from file.
                    this.docDocumentViewer1.LoadFromFile(dialog.FileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Step 3: This button code enables users to open Word files from a stream in Xml or Microsoft Word format.

        private void btnOpenStream_Click(object sender, EventArgs e)
        {
            //open a doc document
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Word97-2003 files(*.doc)|*.doc|Word2007-2010 files (*.docx)|*.docx|All files (*.*)|*.*";
            dialog.Title = "Select a DOC file";
            dialog.Multiselect = false;
            dialog.InitialDirectory = System.IO.Path.GetFullPath(@"..\..\..\..\..\..\Data");
            
            DialogResult result = dialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                try
                {
                    string docFile = dialog.FileName;
                    stream = new System.IO.FileStream(docFile, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
                    if (stream != null)
                    {
                        //Load doc document from stream.
                        this.docDocumentViewer1.LoadFromStream(stream, Spire.Doc.FileFormat.Auto);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

Step 4: Close the open file.

        private void btnClose_Click(object sender, EventArgs e)
        {
            //Close current doc document.
            this.docDocumentViewer1.CloseDocument();
        }

After running the code, I opened a test file with this Windows application. Here is the screenshot of effect:

How to Open and Close Word Files using Spire.DocViewer

Friday, 26 April 2024 02:22

C#: Add Page Numbers to a Word Document

Adding page numbers to your Word documents can enhance their organization and readability. Page numbers provide a convenient reference point for readers and make it easier to navigate through lengthy documents. Whether you're working on a report, thesis, or any other document, incorporating page numbers is a simple yet effective way to improve its overall structure and accessibility.

In this article, you will learn how to add page numbers to a Word document in C# by using the Spire.Doc for .NET library.

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 Page Numbers to a Word Document in C#

To achieve the dynamic addition of page numbers to a Word document, Spire.Doc for .NET offers a range of fields, including FieldPage, FieldNumPages, and FieldSectionPages. These fields act as placeholders for the current page number, total page count, and section page count, allowing you to customize and automate the display of page numbers in your document.

To incorporate these placeholders (usually in the header or footer section) within your Word document, you can utilize the Paragraph.AppendField() method.

The following steps outline how to add a FieldPage field and a FieldNumPages field in the footer, resulting in the display of "X/Y" format in the document.

  • Create a Document object.
  • Load a Word document from a specified file path.
  • Get the first section using Document.Sections[index] property
  • Get the footer of the first section using Section.HeadersFooters.Footer property.
  • Add a paragraph to the footer using HeaderFooter.AddParagraph() method.
  • Insert a FieldPage field, a FieldNumPages field and a "/" to the paragraph using Paragraph.AppendField() and Parargph.AppendText() methods.
  • Save the document to a different Word file.
  • C#
using Spire.Doc;
using Spire.Doc.Documents;
using System.Drawing;

namespace AddPageNumbersToDocument
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a Document object
            Document document = new Document();

            // Load a Word file
            document.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Privacy Policy.docx");

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

            // Get the footer of the section
            HeaderFooter footer = section.HeadersFooters.Footer;

            // Add "page number / page count" to the footer
            Paragraph footerParagraph = footer.AddParagraph();
            footerParagraph.AppendField("page number", FieldType.FieldPage);
            footerParagraph.AppendText(" / ");
            footerParagraph.AppendField("page count", FieldType.FieldNumPages);
            footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center;

            // Apply formatting to the page number
            ParagraphStyle style = new ParagraphStyle(document);
            style.CharacterFormat.Bold = true;
            style.CharacterFormat.FontName = "Times New Roman";
            style.CharacterFormat.FontSize = 18;
            style.CharacterFormat.TextColor = Color.Red;
            document.Styles.Add(style);
            footerParagraph.ApplyStyle(style);

            // Save the document
            document.SaveToFile("AddPageNumbersToDocument.docx");

            // Dispose resources
            document.Dispose();
        }
    }
}

C#: Add Page Numbers to a Word Document

Add Page Numbers to a Specific Section in a Word Document in C#

By default, page numbers in the footer of a section are automatically linked to the previous section, ensuring a continuous display. However, if you wish to add page numbers to a specific section only, you need to unlink the subsequent section from the previous section and remove the content of the footers in the subsequent sections.

The following are the steps to add page numbers to a specific section in a Word document using Spire.Doc for .NET.

  • Create a Document object.
  • Load a Word document from a specified file path.
  • Get a specific section using Document.Sections[index] property
  • Get the footer of the section using Section.HeadersFooters.Footer property.
  • Restart page numbering from 1 by setting Section.PageSetup.RestartPageNumbering property to true and Section.PageSetup.PageStartingNumber property to 1.
  • Insert a FieldPage field, a FieldSectionPages field and a "/" to the footer using Paragraph.AppendField() and Parargph.AppendText() methods.
  • Disable "Link to previous" by setting HeadersFooters.Footer.LinkToPrevious propety to false.
  • Delete the content of the footers in the subsequent sections
  • Save the document to a different Word file.
  • C#
using Spire.Doc;
using Spire.Doc.Documents;
using System.Drawing;

namespace AddPageNumbersToSpecificSection
{ 
    class Program
    {
        static void Main(string[] args)
        {
            // Create a Document object
            Document document = new Document();

            // Load a Word file
            document.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Privacy Policy.docx");

            // Get a specific section
            int sectionIndex = 1;
            Section section = document.Sections[sectionIndex];

            // Restart page numbering from 1
            section.PageSetup.RestartPageNumbering = true;
            section.PageSetup.PageStartingNumber = 1;

            // Get the footer of the section
            HeaderFooter footer = section.HeadersFooters.Footer;

            // Add "page number / page count" to the footer
            Paragraph footerParagraph = footer.AddParagraph();
            footerParagraph.AppendField("page number", FieldType.FieldPage);
            footerParagraph.AppendText(" / ");
            footerParagraph.AppendField("page count", FieldType.FieldSectionPages);
            footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center;

            // Apply formatting to the page number
            ParagraphStyle style = new ParagraphStyle(document);
            style.CharacterFormat.Bold = true;
            style.CharacterFormat.FontName = "Times New Roman";
            style.CharacterFormat.FontSize = 18;
            style.CharacterFormat.TextColor = Color.Red;
            document.Styles.Add(style);
            footerParagraph.ApplyStyle(style);

            // Disable "Link to previous" in the subsequent section
            document.Sections[sectionIndex + 1].HeadersFooters.Footer.LinkToPrevious = false;

            // Delete the content of the footers in the subsequent sections
            for (int i = sectionIndex + 1; i < document.Sections.Count; i++)
            {
                document.Sections[i].HeadersFooters.Footer.ChildObjects.Clear();
                document.Sections[i].HeadersFooters.Footer.AddParagraph();
            }

            // Save the document
            document.SaveToFile("AddPageNumbersToSection.docx");

            // Dispose resources
            document.Dispose();
        }
    }
}

C#: Add Page Numbers to a Word Document

Add Different Page Numbers to Different Sections in a Word Document in C#

To ensure that different sections have distinct page numbers, you need to get each section in the document, add page numbers to them separately, and restart page numbering from 1 at the beginning of each section.

The following are detailed steps.

  • Create a Document object.
  • Load a Word document from a specified file path.
  • Iterate through the sections in the document.
    • Get a specific section using Document.Sections[index] property
    • Get the footer of the section using Section.HeadersFooters.Footer property.
    • Restart page numbering from 1 by setting Section.PageSetup.RestartPageNumbering property to true and Section.PageSetup.PageStartingNumber property to 1.
    • Insert a FieldPage field, a FieldSectionPages field and a "/" to the footer using Paragraph.AppendField() and Parargph.AppendText() methods.
  • Save the document to a different Word file.
  • C#
using Spire.Doc;
using Spire.Doc.Documents;
using System.Drawing;

namespace AddDifferentPageNumbersToDifferentSections
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a Document object
            Document document = new Document();

            // Load a Word file
            document.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Privacy Policy.docx");

            // Iterate through the sections in the document
            for (int i = 0; i < document.Sections.Count; i++)
            {
                // Get a specific section
                Section section = document.Sections[i];

                // Restart page numbering from 1
                section.PageSetup.RestartPageNumbering = true;
                section.PageSetup.PageStartingNumber = 1;

                // Get the footer of the section
                HeaderFooter footer = section.HeadersFooters.Footer;

                // Add "page number / page count" to the footer
                Paragraph footerParagraph = footer.AddParagraph();
                footerParagraph.AppendField("page number", FieldType.FieldPage);
                footerParagraph.AppendText(" / ");
                footerParagraph.AppendField("page count", FieldType.FieldSectionPages);
                footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center;

                // Apply formatting to the page number
                ParagraphStyle style = new ParagraphStyle(document);
                style.CharacterFormat.Bold = true;
                style.CharacterFormat.FontName = "Times New Roman";
                style.CharacterFormat.FontSize = 18;
                style.CharacterFormat.TextColor = Color.Red;
                document.Styles.Add(style);
                footerParagraph.ApplyStyle(style);
            }

            // Save the document
            document.SaveToFile("AddDifferentPageNumbersToSections.docx");

            // Dispose resources
            document.Dispose();
        }
    }
}

C#: Add Page Numbers to a Word Document

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.

An Excel chart is a graphical representation of numbers, which visualizes your data in selected data table. Sometimes, we create a chart with MS Excel, but we don't really want to share the whole Excel file except for the chart. In such a case, we can export charts as image files for easy sharing. In the following section, you will learn how to save your Excel chart as an image in C# and VB.NET via Spire.XLS.

In the test file, I have created four different type of charts based on a same data table. Then, let’s see how each chart can be saved as an image with code.

Test File:

Save Excel Charts as Images in C#, VB.NET

Code Snippet:

Step 1: Create a new workbook and load the test file.

Workbook workbook = new Workbook();
workbook.LoadFromFile("chart.xlsx", ExcelVersion.Version2010);

Step 2: Get the worksheet that contains the chart from workbook.

Worksheet sheet=workbook.Worksheets[0];

Step 3: Initialize a new instance of image array to store the Bitmap images which are converted from charts.

Image[] imgs = workbook.SaveChartAsImage(sheet);

Step 4: Traverse every item in image array and save them to specified image format.

for (int i = 0; i < imgs.Length; i++)
       {
           imgs[i].Save(string.Format("img-{0}.png", i), ImageFormat.Png);
       }

Output:

Charts have been saved as images in bin folder.

Save Excel Charts as Images in C#, VB.NET

The second chart looks like:

Save Excel Charts as Images in C#, VB.NET

Full Code:

[C#]
using Spire.Xls;
using System.Drawing;
using System.Drawing.Imaging;
namespace SaveExcelCharts
{
    class Program
    {

        static void Main(string[] args)
        {

            Workbook workbook = new Workbook();
            workbook.LoadFromFile("chart.xlsx", ExcelVersion.Version2010);
            Worksheet sheet = workbook.Worksheets[0];
            Image[] imgs = workbook.SaveChartAsImage(sheet);
            for (int i = 0; i < imgs.Length; i++)
            {
                imgs[i].Save(string.Format("img-{0}.png", i), ImageFormat.Png);
            }

        }
    }
}
[VB.NET]
Imports Spire.Xls
Imports System.Drawing
Imports System.Drawing.Imaging
Namespace SaveExcelCharts
	Class Program

		Private Shared Sub Main(args As String())

			Dim workbook As New Workbook()
			workbook.LoadFromFile("chart.xlsx", ExcelVersion.Version2010)
			Dim sheet As Worksheet = workbook.Worksheets(0)
			Dim imgs As Image() = workbook.SaveChartAsImage(sheet)
			For i As Integer = 0 To imgs.Length - 1
				imgs(i).Save(String.Format("img-{0}.png", i), ImageFormat.Png)
			Next

		End Sub
	End Class
End Namespace

Sometimes, the values in a chart vary widely from data series to data series, so it is difficult for us to compare the data only based on the primary vertical axis. To make the chart easier to read, you can plot one or more data series on a secondary axis. This article presents how to add secondary value axis to PowerPoint chart using Spire.Presentation in C# and VB.NET.

As is shown in the following combination chart, we can hardly learn the information of Series 3 since it contains different type of data compared with Series 1 and Series 2. In such cases, it is necessary to add a secondary axis to display the value of Series 3.

Test File:

Add Secondary Value Axis to PowerPoint Chart in C#, VB.NET

Code Snippet:

Step 1: Create a new PowerPoint document and load the test file.

Presentation ppt = new Presentation("Test.pptx", FileFormat.Pptx2010);

Step 2: Get the chat from the PowerPoint file.

IChart chart = ppt.Slides[0].Shapes[0] as IChart;

Step 3: Add a secondary axis to display the value of Series 3.

chart.Series[2].UseSecondAxis = true;

Step 4: Set the grid line of secondary axis as invisible.

chart.SecondaryValueAxis.MajorGridTextLines.FillType=FillFormatType.None;

Step 5: Save the file.

ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010);

Result:

Add Secondary Value Axis to PowerPoint Chart in C#, VB.NET

Entire Code:

[C#]
using Spire.Presentation;
using Spire.Presentation.Charts;
using Spire.Presentation.Drawing;

namespace AddValue
{

    class Program
    {
        static void Main(string[] args)
        {

            Presentation ppt = new Presentation("Test.pptx", FileFormat.Pptx2010);
            IChart chart = ppt.Slides[0].Shapes[0] as IChart;
            chart.Series[2].UseSecondAxis = true;
            chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None;
            ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010);

        }
    }
}
[VB.NET]
Imports Spire.Presentation
Imports Spire.Presentation.Charts
Imports Spire.Presentation.Drawing

Namespace AddValue

	Class Program
		Private Shared Sub Main(args As String())

			Dim ppt As New Presentation("Test.pptx", FileFormat.Pptx2010)
			Dim chart As IChart = TryCast(ppt.Slides(0).Shapes(0), IChart)
			chart.Series(2).UseSecondAxis = True
			chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None
			ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010)

		End Sub
	End Class
End Namespace
Monday, 24 November 2014 07:56

How to Create Table of Contents (TOC) in C#

A table of contents, usually shorten as 'Contents' and abbreviated as TOC, is one of the most common function used in the professional documents. It gives readers clear and brief information of the document. This How To Guide for developers will explain the steps of create table of contents in C# with the help of a .NET word API Spire.Doc for .NET.

Firstly, view the screenshot of the table of contents created by the Spire.Doc in C#.

How to create Table of Contents (TOC) in C#

In this example, we call the method of AppendTOC to add the table of contents directly and use ApplyStyle to set the styles. Here comes to the steps of how to create TOC in C#.

Name Space we will use:

using Spire.Doc;
using Spire.Doc.Documents;

Step 1: Create a new document and add section and paragraph to the document.

Document doc = new Document();
Section section = doc.AddSection();
Paragraph para = section.AddParagraph();

Step 2: Add the Table of Contents and add the text that you want to appear in the table of contents.

para.AppendTOC(1, 3);
//Add a new paragraph to the section
Paragraph para1 = section.AddParagraph();
//Add text to the paragraph
para1.AppendText("Head1");

Step 3: Set the style for the paragraph.

para1.ApplyStyle(BuiltinStyle.Heading1);

Step 4: Add the second paragraph and set the style.

Paragraph para2 = section.AddParagraph();
para2.AppendText("Head2");
para2.ApplyStyle(BuiltinStyle.Heading2);

Step 5: Update the table of contents and save the document to file.

doc.UpdateTableOfContents();
doc.SaveToFile("CreateTableOfContent.docx", FileFormat.Docx);

Full codes:

using Spire.Doc;
using Spire.Doc.Documents;

namespace TableofContents
{
    class Program
    {
        static void Main(string[] args)
        {
            Document doc = new Document();
            Section section = doc.AddSection();
            Paragraph para = section.AddParagraph();

            para.AppendTOC(1, 3);
            Paragraph para1 = section.AddParagraph();
            para1.AppendText("Head1");

            para1.ApplyStyle(BuiltinStyle.Heading1);

            Paragraph para2 = section.AddParagraph();
            para2.AppendText("Head2");
            para2.ApplyStyle(BuiltinStyle.Heading2);

            doc.UpdateTableOfContents();
            doc.SaveToFile("CreateTableOfContent.docx", FileFormat.Docx);

        }
    }
}

Optimizing the order of slides in a PowerPoint presentation is a simple skill. By rearranging slides, you can refine the logic and flow of your presentation, group related points together, or move slides to more impactful locations. This flexibility enables you to create a cohesive, engaging narrative that captivates your audience.

This article demonstrates how to programmatically change the slide order in a PowerPoint document in C# by using the Spire.Presentation for .NET library.

Install Spire.Presentation for .NET

To begin with, you need to add the DLL files included in the Spire.Presentation 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.Presentation

Change the Slide Order in a PowerPoint Document in C#

To reorder slides in a PowerPoint presentation, create two Presentation objects - one to load the original document and another to create a new document. By copying the slides from the original document to the new one in the desired sequence, you can easily rearrange the slide order.

The steps to rearrange slides in a PowerPoint document using C# are as follows.

  • Create a Presentation object.
  • Load a PowerPoint document using Presentation.LoadFromFile() method.
  • Specify the slide order within an array.
  • Create another Presentation object for creating a new presentation.
  • Add the slides from the original document to the new presentation in the specified order using Presentation.Slides.Append() method.
  • Save the new presentation to a PPTX file using Presentation.SaveToFile() method.
  • C#
using Spire.Presentation;

namespace ChangeSlideOrder
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a Presentation object
            Presentation presentation = new Presentation();

            // Load a PowerPoint file
            presentation.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.pptx");

            // Specify the new slide order within an array
            int[] newSlideOrder = new int[] { 4, 2, 1, 3 };

            // Create another Presentation object
            Presentation new_presentation = new Presentation();

            // Remove the default slide
            new_presentation.Slides.RemoveAt(0);

            // Iterate through the array
            for (int i = 0; i < newSlideOrder.Length; i++)
            {
                // Add the slides from the original PowerPoint file to the new PowerPoint document in the new order
                new_presentation.Slides.Append(presentation.Slides[newSlideOrder[i] - 1]);
            }

            // Save the new presentation to file
            new_presentation.SaveToFile("NewOrder.pptx", FileFormat.Pptx2019);

            // Dispose resources
            presentation.Dispose();
            new_presentation.Dispose();
        }
    }
}

C#: Change the Slide Order in a PowerPoint Document

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.Presentation supports to work with multiple functions in chart, such as set number format and remove tick marks, format data labels of series. This article will focus on demonstrate how to set the color for datapoints of series in the PowerPoint document in C#.

In the class of ChartDataPoint, it represents a data point on the chart. Developers can access it to set the color, fill type and set the line property, etc. Now let's access to the datapoints to set color for datapoints of series with following code snippet:

Step 1: Create a new instance of Presentation class and load the file that contains the column chart.

Presentation ppt = new Presentation();
ppt.LoadFromFile("sample.pptx ");

Step 2: Get the chart in the document

IChart chart = ppt.Slides[0].Shapes[3] as IChart;
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
chart.Series[0].Values = chart.ChartData["B2", "B5"];

Step 3: Access datapoints to set the property

ChartDataPoint cdp = new ChartDataPoint(chart.Series[0]);
chart.Series[1].Values = chart.ChartData["C2", "C5"];
cdp.Index = 1;
//set the type of filling
cdp.Fill.FillType = FillFormatType.Solid;
//set the fill color
cdp.Fill.SolidColor.KnownColor = KnownColors.Red;
chart.Series[0].DataPoints.Add(cdp);

Step 4: Save and Launch to view the resulted PPTX file.

ppt.SaveToFile("Accessdatapoint.pptx", FileFormat.Pptx2007);
System.Diagnostics.Process.Start("Accessdatapoint.pptx");

Effective screenshot:

Set color for datapoints of series in Presentation

Full codes:

using Spire.Presentation;
using Spire.Presentation.Charts;
using Spire.Presentation.Drawing;

namespace FormatData
{

    class Program
    {
        static void Main(string[] args)
        {

            Presentation ppt = new Presentation();
            ppt.LoadFromFile("sample.pptx ");
            IChart chart = ppt.Slides[0].Shapes[3] as IChart;
            chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
            chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
            chart.Series[0].Values = chart.ChartData["B2", "B5"];

            ChartDataPoint cdp = new ChartDataPoint(chart.Series[0]);
            chart.Series[1].Values = chart.ChartData["C2", "C5"];
            cdp.Index = 1;
            cdp.Fill.FillType = FillFormatType.Solid;
            cdp.Fill.SolidColor.KnownColor = KnownColors.Red;
            chart.Series[0].DataPoints.Add(cdp);

            ppt.SaveToFile("Accessdatapoint.pptx", FileFormat.Pptx2007);
            System.Diagnostics.Process.Start("Accessdatapoint.pptx");

        }
    }
}