Create Excels with C# and EPPlus: Miscellaneous

Version 4.5.3.3 is the last version of EPPlus you can use without a license for commercial use.
See some alternatives if that is a dealbreaker for you!

We now have a blog series on an alternative Excel package ClosedXML
Which is basically on equal footing with EPPlus.

Category:

dotnet

Tags:

exceltutorial

Share this article on:


Miscellaneous features

EPPlus can do a whole lot more for you. This post covers some interesting stuff that didn’t really fit anywhere else.

// Set workbook properties like title, author, company, ...
OfficeProperties props = package.Workbook.Properties;

// Modify column props: AutoFit(), Hidden, ...
var colE = package.Workbook.Worksheets.First().Column(5);

Printing

using (var package = new ExcelPackage())
{
	var sheet = package.Workbook.Worksheets.Add("Printing");
	sheet.Cells["A1"].Value = "Check the print preview (Ctrl+P)";

	var header = sheet.HeaderFooter.OddHeader;
	// &24: Font size
	// &U: Underlined
	// &"": Font name
	header.CenteredText = "&24&U&"Arial,Regular Bold" YourTitle";
	header.RightAlignedText = ExcelHeaderFooter.CurrentDate;
	header.LeftAlignedText = ExcelHeaderFooter.SheetName;

	ExcelHeaderFooterText footer = sheet.HeaderFooter.OddFooter;
	footer.RightAlignedText = $"Page {ExcelHeaderFooter.PageNumber} of {ExcelHeaderFooter.NumberOfPages}";
	footer.CenteredText = ExcelHeaderFooter.SheetName;
	footer.LeftAlignedText = ExcelHeaderFooter.FilePath + ExcelHeaderFooter.FileName;

	sheet.PrinterSettings.RepeatRows = sheet.Cells["1:2"];
	sheet.PrinterSettings.RepeatColumns = sheet.Cells["A:G"];

	sheet.View.PageLayoutView = true;

	package.SaveAs(new FileInfo(@""));
}

Comments & RichText

Each RichText.Add() returns a new object that takes over all styling from the textobject is was invoked on and can then be styled separately.

using (var package = new ExcelPackage())
{
	var sheet = package.Workbook.Worksheets.Add("Rich Comments");

	ExcelComment comment = sheet.Cells["A1"].AddComment("Bold title:rn", "evil corp");
	comment.Font.Bold = true;
	comment.AutoFit = true;

	ExcelRichText rt = comment.RichText.Add("Unbolded subtext");
	rt.Bold = false;
	// Also rt.Color, FontName, Size, ...

	// A more extensive example can be found in Sample6.cs::AddComments of the official examples project
	// https://github.com/JanKallman/EPPlus/blob/master/SampleApp/Sample6.cs

	package.SaveAs(new FileInfo(@""));
}

Converting indexes and ranges

[Test]
public void ConvertingIndexesAndAddresses()
{
	Assert.That(ExcelCellBase.GetAddress(1, 1), Is.EqualTo("A1"));
	Assert.That(ExcelCellBase.IsValidCellAddress("A5"), Is.True);

	Assert.That(ExcelCellBase.GetFullAddress("MySheet", "A1:A3"), Is.EqualTo("'MySheet'!A1:A3"));

	Assert.That(ExcelCellBase.TranslateToR1C1("AB23", 0, 0), Is.EqualTo("R[23]C[28]"));
	Assert.That(ExcelCellBase.TranslateFromR1C1("R23C28", 0, 0), Is.EqualTo("$AB$23"));
}

The project code also contains additional examples with

  • Workbook & sheet protection from user editing
  • A UnitTest to generate excel with a sample LoadFromXXX with a sheet for each TableStyles enum value.

Also in this series

Extras

Stuff that came into being during the making of this post

Package Versions

This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.