C#: AutoFit Tables in Word

2025-04-15 00:50:00 Written by Koohji

Manually adjusting table columns can be time-consuming, especially if you have a large document with multiple tables. This is where the AutoFit tables feature in Word comes into play. It allows you to adjust the size of your table automatically, eliminating the need for manual adjustments. By setting AutoFit, the table will always adapt to display the content in the most suitable way. In this article, you will learn how to autofit tables in a Word document in C# 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 DLL files can be either downloaded from this link or installed via NuGet.

PM> Install-Package Spire.Doc

Set Tables to AutoFit to Contents in Word in C#

The AutoFit to Contents option in Word adjusts the size of table columns and rows according to the content within the cells. Once set, each column is automatically resized to ensure that all content is displayed completely without excessive empty space.

With Spire.Doc for .NET, you can use the Table.AutoFit(AutoFitBehaviorType.AutoFitToContents) method to autofit tables to content. The following are the detailed steps:

  • Create a Document instance.
  • Load a Word document using Document.LoadFromFile() method.
  • Get a specified section in the document through Document.Sections[] property.
  • Get a specified table in the section through Section.Tables[] property.
  • AutoFit the table to contents using Table.AutoFit(AutoFitBehaviorType.AutoFitToContents) method.
  • Save the result document using Document.SaveToFile() method.
  • C#
using Spire.Doc;

namespace AutoFitToContents
{
    class Program
    {

        static void Main(string[] args)
        {
            // Create a Document instance
            Document doc = new Document();

            // Load a Word document
            doc.LoadFromFile("TableTemp.docx");

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

            // Get the first table in the section
            Table table = section.Tables[0] as Table;

            // AutoFit the table to contents
            table.AutoFit(AutoFitBehaviorType.AutoFitToContents);

            // Save the result document
            doc.SaveToFile("AutoFitToContents.docx", FileFormat.Docx);
        }
    }
}

Autofit the table to cell content in Word

Set Tables to AutoFit to Window in Word in C#

The AutoFit to Window option in Word enables the table to automatically adjust its width to fit the width of the Word window. Once set, the table will expand or contract to fill the entire page width (between the left and right margins).

To autofit tables to page, use the Table.AutoFit(AutoFitBehaviorType.AutoFitToWindow) method. The following are the detailed steps:

  • Create a Document instance.
  • Load a Word document using Document.LoadFromFile() method.
  • Get a specified section in the document through Document.Sections[] property.
  • Get a specified table in the section through Section.Tables[] property.
  • AutoFit the table to Word window using Table.AutoFit(AutoFitBehaviorType.AutoFitToWindow) method.
  • Save the result document using Document.SaveToFile() method.
  • C#
using Spire.Doc;

namespace AutoFitToWindow
{
    class Program
    {

        static void Main(string[] args)
        {
            // Create a Document instance
            Document doc = new Document();

            // Load a Word document
            doc.LoadFromFile("TableTemp.docx");

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

            // Get the first table in the section
            Table table = section.Tables[0] as Table;

            // AutoFit the table to page
            table.AutoFit(AutoFitBehaviorType.AutoFitToWindow);

            // Save the result document
            doc.SaveToFile("AutoFitToWindow.docx", FileFormat.Docx);
        }
    }
}

Autofit the table to page width in Word

Set Tables to Fixed Column Width in Word in C#

The Fixed Column Width option in Word allows you to maintain a specific, unchanging width for each column in the table. Once set, the column width of the table will remain fixed regardless of any changes to the content within the cells or the size of the document window.

The Table.AutoFit(AutoFitBehaviorType.FixedColumnWidths) method can be used to set fixed column width for Word tables. The following are the detailed steps to:

  • Create a Document instance.
  • Load a Word document using Document.LoadFromFile() method.
  • Get a specified section in the document through Document.Sections[] property.
  • Get a specified table in the section through Section.Tables[] property.
  • Fix the column widths of the table using Table.AutoFit(AutoFitBehaviorType.FixedColumnWidths) method.
  • Iterate through each row and then set the new column widths using Table.Rows[index].Cells[index].SetCellWidth() method.
  • Save the result document using Document.SaveToFile() method.
  • C#
using Spire.Doc;

namespace FixedColumnWidth
{
    class Program
    {

        static void Main(string[] args)
        {
            // Create a Document instance
            Document doc = new Document();

            // Load a Word document
            doc.LoadFromFile("TableTemp.docx");

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

            // Get the first table in the section
            Table table = section.Tables[0] as Table;

            // Set to fixed column width
            table.AutoFit(AutoFitBehaviorType.FixedColumnWidths);

            // Iterate through each row in the table
            for (int i = 0; i < table.Rows.Count; i++)
            {
                // Reset the width of the first column 
                table.Rows[i].Cells[0].SetCellWidth(120f, CellWidthType.Point);
                // Reset the width of the second column 
                table.Rows[i].Cells[1].SetCellWidth(60f, CellWidthType.Point);
                // Reset the width of the third column 
                table.Rows[i].Cells[2].SetCellWidth(40f, CellWidthType.Point);
                // Reset the width of the fourth column 
                table.Rows[i].Cells[3].SetCellWidth(90f, CellWidthType.Point);

            }

            // Save the result document
            doc.SaveToFile("FixedColumnWidth.docx", FileFormat.Docx);
        }
    }
}

Set fixed column width for a Word table

Get a Free License

To fully experience the capabilities of Spire.Doc for .NET without any evaluation limitations, you can request a free 30-day trial license.

Axis is a significant part of charts. In order to make the data easier to read, we may need to modify the axis values or display the minor grid lines. This article demonstrates how to format axis of chart in PowerPoint using Spire.Presenation.

Here is the test document:

How to Format Axis of Chart in C#, VB.NET

Code Snippet:

Step 1: Initialize a new instance of Presentation class and load a sample PowerPoint document.

Presentation ppt = new Presentation(@"C:\Users\Administrator\Desktop\Test.pptx", FileFormat.Pptx2010);

Step 2: Get the chart from the document.

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

Step 3: Set bounds of axis value. Before we assign values, we must set IsAutoMax and IsAutoMin as false, otherwise MS PowerPoint will automatically set the values.

chart.PrimaryValueAxis.IsAutoMax = false;
chart.PrimaryValueAxis.IsAutoMin= false;
chart.SecondaryValueAxis.IsAutoMax = false;
chart.SecondaryValueAxis.IsAutoMin= false;
chart.PrimaryValueAxis.MinValue = 0f;
chart.PrimaryValueAxis.MaxValue = 5.0f;
chart.SecondaryValueAxis.MinValue = 0f;
chart.SecondaryValueAxis.MaxValue = 4.0f;

Step 4: For the same reason, IsAutoMajor and IsAutoMinor must be set as false before assigning values to MajorUnit and MinorUnit.

chart.PrimaryValueAxis.IsAutoMajor = false;
chart.PrimaryValueAxis.IsAutoMinor= false;
chart.SecondaryValueAxis.IsAutoMajor = false;
chart.SecondaryValueAxis.IsAutoMinor = false;
chart.PrimaryValueAxis.MajorUnit = 1.0f;
chart.PrimaryValueAxis.MinorUnit = 0.2f;
chart.SecondaryValueAxis.MajorUnit = 1.0f;
chart.SecondaryValueAxis.MinorUnit =0.2f;

Step 5: Set and format minor grid lines.

chart.PrimaryValueAxis.MinorGridLines.FillType = FillFormatType.Solid;
chart.SecondaryValueAxis.MinorGridLines.FillType = FillFormatType.Solid;
chart.PrimaryValueAxis.MinorGridLines.Width = 0.1f;         
chart.SecondaryValueAxis.MinorGridLines.Width = 0.1f;
chart.PrimaryValueAxis.MinorGridLines.SolidFillColor.Color = Color.LightGray;
chart.SecondaryValueAxis.MinorGridLines.SolidFillColor.Color = Color.LightGray;
chart.PrimaryValueAxis.MinorGridLines.DashStyle = LineDashStyleType.Dash;
chart.SecondaryValueAxis.MinorGridLines.DashStyle = LineDashStyleType.Dash;

Step 6: Set and format major grid lines.

chart.PrimaryValueAxis.MajorGridTextLines.Width = 0.3f;
chart.PrimaryValueAxis.MajorGridTextLines.SolidFillColor.Color = Color.LightSkyBlue;
chart.SecondaryValueAxis.MajorGridTextLines.Width = 0.3f;
chart.SecondaryValueAxis.MajorGridTextLines.SolidFillColor.Color = Color.LightSkyBlue;

Step 7: Save the file.

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

Output:

How to Format Axis of Chart in C#, VB.NET

Full Code:

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

namespace FormatAxis
{
    class Program
    {
        static void Main(string[] args)
        {
            Presentation ppt = new Presentation(@"C:\Users\Administrator\Desktop\Test.pptx", FileFormat.Pptx2010);
            IChart chart = ppt.Slides[0].Shapes[0] as IChart;

            chart.PrimaryValueAxis.IsAutoMax = false;
            chart.PrimaryValueAxis.IsAutoMin = false;
            chart.SecondaryValueAxis.IsAutoMax = false;
            chart.SecondaryValueAxis.IsAutoMin = false;
            chart.PrimaryValueAxis.MinValue = 0f;
            chart.PrimaryValueAxis.MaxValue = 5.0f;
            chart.SecondaryValueAxis.MinValue = 0f;
            chart.SecondaryValueAxis.MaxValue = 4.0f;

            chart.PrimaryValueAxis.IsAutoMajor = false;
            chart.PrimaryValueAxis.IsAutoMinor = false;
            chart.SecondaryValueAxis.IsAutoMajor = false;
            chart.SecondaryValueAxis.IsAutoMinor = false;
            chart.PrimaryValueAxis.MajorUnit = 1.0f;
            chart.PrimaryValueAxis.MinorUnit = 0.2f;
            chart.SecondaryValueAxis.MajorUnit = 1.0f;
            chart.SecondaryValueAxis.MinorUnit = 0.2f;

            chart.PrimaryValueAxis.MinorGridLines.FillType = FillFormatType.Solid;
            chart.SecondaryValueAxis.MinorGridLines.FillType = FillFormatType.Solid;
            chart.PrimaryValueAxis.MinorGridLines.Width = 0.1f;
            chart.SecondaryValueAxis.MinorGridLines.Width = 0.1f;
            chart.PrimaryValueAxis.MinorGridLines.SolidFillColor.Color = Color.LightGray;
            chart.SecondaryValueAxis.MinorGridLines.SolidFillColor.Color = Color.LightGray;
            chart.PrimaryValueAxis.MinorGridLines.DashStyle = LineDashStyleType.Dash;
            chart.SecondaryValueAxis.MinorGridLines.DashStyle = LineDashStyleType.Dash;

            chart.PrimaryValueAxis.MajorGridTextLines.Width = 0.3f;
            chart.PrimaryValueAxis.MajorGridTextLines.SolidFillColor.Color = Color.LightSkyBlue;
            chart.SecondaryValueAxis.MajorGridTextLines.Width = 0.3f;
            chart.SecondaryValueAxis.MajorGridTextLines.SolidFillColor.Color = Color.LightSkyBlue;

            ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010);
            System.Diagnostics.Process.Start("Result.pptx");

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

Namespace FormatAxis
	Class Program
		Private Shared Sub Main(args As String())
			Dim ppt As New Presentation("C:\Users\Administrator\Desktop\Test.pptx", FileFormat.Pptx2010)
			Dim chart As IChart = TryCast(ppt.Slides(0).Shapes(0), IChart)

			chart.PrimaryValueAxis.IsAutoMax = False
			chart.PrimaryValueAxis.IsAutoMin = False
			chart.SecondaryValueAxis.IsAutoMax = False
			chart.SecondaryValueAxis.IsAutoMin = False
			chart.PrimaryValueAxis.MinValue = 0F
			chart.PrimaryValueAxis.MaxValue = 5F
			chart.SecondaryValueAxis.MinValue = 0F
			chart.SecondaryValueAxis.MaxValue = 4F

			chart.PrimaryValueAxis.IsAutoMajor = False
			chart.PrimaryValueAxis.IsAutoMinor = False
			chart.SecondaryValueAxis.IsAutoMajor = False
			chart.SecondaryValueAxis.IsAutoMinor = False
			chart.PrimaryValueAxis.MajorUnit = 1F
			chart.PrimaryValueAxis.MinorUnit = 0.2F
			chart.SecondaryValueAxis.MajorUnit = 1F
			chart.SecondaryValueAxis.MinorUnit = 0.2F

			chart.PrimaryValueAxis.MinorGridLines.FillType = FillFormatType.Solid
			chart.SecondaryValueAxis.MinorGridLines.FillType = FillFormatType.Solid
			chart.PrimaryValueAxis.MinorGridLines.Width = 0.1F
			chart.SecondaryValueAxis.MinorGridLines.Width = 0.1F
			chart.PrimaryValueAxis.MinorGridLines.SolidFillColor.Color = Color.LightGray
			chart.SecondaryValueAxis.MinorGridLines.SolidFillColor.Color = Color.LightGray
			chart.PrimaryValueAxis.MinorGridLines.DashStyle = LineDashStyleType.Dash
			chart.SecondaryValueAxis.MinorGridLines.DashStyle = LineDashStyleType.Dash

			chart.PrimaryValueAxis.MajorGridTextLines.Width = 0.3F
			chart.PrimaryValueAxis.MajorGridTextLines.SolidFillColor.Color = Color.LightSkyBlue
			chart.SecondaryValueAxis.MajorGridTextLines.Width = 0.3F
			chart.SecondaryValueAxis.MajorGridTextLines.SolidFillColor.Color = Color.LightSkyBlue

			ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010)
			System.Diagnostics.Process.Start("Result.pptx")

		End Sub
	End Class
End Namespace

In some cases, we need to copy one or more pages of a pdf file, while copy pdf pages can be classified into two categories: copy pages within a pdf file and copy pages between pdf files. With the help of Spire.PDF, we can easily achieve this task programmatically instead of using Adobe Acrobat and dragging the page to copy it manually.

This article will demonstrate how to copy a page within a pdf file or between pdf files in WPF using Spire.PDF for WPF.

Before using the code, please add the following namespace first:

using System.Drawing;
using System.Windows;
using Spire.Pdf;
using Spire.Pdf.Graphics;

Copy Page within a PDF File

Step 1: Initialize a new instance of PdfDocument class and load the sample pdf file.

PdfDocument doc1 = new PdfDocument();
doc1.LoadFromFile("Stories.pdf");

Step 2: Get the first page of the pdf file, then get its page size and call CreateTemplate() method to create a new pdf template based on the first page.

PdfPageBase page = doc1.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();

Step 3: Copy the first page within the pdf file.

Add a new page that is the same size as the first page to the pdf file, draw the template to the new page by invoking DrawTemplate(PdfTemplate template, PointF location) method.

page = doc1.Pages.Add(size, new PdfMargins(0,0));
page.Canvas.DrawTemplate(template,new PointF(0,0));

Step 4: Save and launch the file.

doc1.SaveToFile("copyWithin.pdf");
System.Diagnostics.Process.Start("copyWithin.pdf");

Effective Screenshot:

How to Copy a Page within a PDF File or between PDF Files in WPF

Copy Page between PDF Files

Step 1: Initialize a new instance of PdfDocument class named doc1 and load the first pdf file.

PdfDocument doc1 = new PdfDocument();
doc1.LoadFromFile("Stories.pdf");

Step 2: Initialize a new instance of PdfDocument class named doc2 and load the second pdf file.

PdfDocument doc2 = new PdfDocument();
doc2.LoadFromFile("Instruction.pdf");

Step 3: Get the first page of doc1, then get its page size and create a new template based on the first page.

PdfPageBase page = doc1.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();

Step 4: Copy the first page from doc1 to doc2.

Invoking Insert(int index, SizeF size, PdfMargins margins) method to insert a new page that is the same size as the first page to the specified location of doc2, next draw the template to the new page.

doc2.Pages.Insert(1, size, new PdfMargins(0,0));          
doc2.Pages[1].Canvas.DrawTemplate(template,new PointF(0,0));

If you want to copy the page to doc2 as its last page, please use the following code to add a new page to the end of doc2, then draw the template to the new page.

doc2.Pages.Add(size, new PdfMargins(0, 0));

Step 5: Save and launch the file.

doc2.SaveToFile("copyBetween.pdf");
System.Diagnostics.Process.Start("copyBetween.pdf");

Effective Screenshot:

How to Copy a Page within a PDF File or between PDF Files in WPF

Full codes:

Copy page within a pdf file:

private void button1_Click(object sender, RoutedEventArgs e)
{
    PdfDocument doc1 = new PdfDocument();
    doc1.LoadFromFile("Stories.pdf");

    PdfPageBase page = doc1.Pages[0];
    SizeF size = page.Size;
    PdfTemplate template = page.CreateTemplate();
            
    page = doc1.Pages.Add(size, new PdfMargins(0,0));
    page.Canvas.DrawTemplate(template, new PointF(0,0));

    doc1.SaveToFile("copyWithin.pdf");
    System.Diagnostics.Process.Start("copyWithin.pdf");
}

Copy page between pdf files:

private void button1_Click(object sender, RoutedEventArgs e)
{
    PdfDocument doc1 = new PdfDocument();
    doc1.LoadFromFile("Stories.pdf");
            
    PdfDocument doc2 = new PdfDocument();
    doc2.LoadFromFile("Instruction.pdf");

    PdfPageBase page = doc1.Pages[0];
    SizeF size = page.Size;
    PdfTemplate template = page.CreateTemplate();
             
doc2.Pages.Insert(1, size, new PdfMargins(0,0));           
    doc2.Pages[1].Canvas.DrawTemplate(template, new PointF(0,0));

    doc2.SaveToFile("copyBetween.pdf");
    System.Diagnostics.Process.Start("copyBetween.pdf");
}
page 220