Defined Names
Defined names are very useful in Excel. It's possible to give a name to a cell, a range or a formula and use that name elsewhere.
//creating workbook with 2 worksheets
var workbook = new Workbook();
var exchangeRatesSheet = new Sheet("Exchange Rates");
workbook.Sheets.AddSheet(exchangeRatesSheet);
var pricesSheet = new Sheet("Prices");
workbook.Sheets.AddSheet(pricesSheet);
//defining currencies
exchangeRatesSheet["A1"].Value = "EUR";
exchangeRatesSheet["A2"].Value = "GBP";
exchangeRatesSheet["A3"].Value = "USD";
//defining exchange rates
exchangeRatesSheet["B1"].Value = 1.0;
exchangeRatesSheet["B2"].Value = 0.7;
exchangeRatesSheet["B3"].Value = 1.43;
//defining VAT percentage
exchangeRatesSheet["E1"].Value = "VAT";
exchangeRatesSheet["F1"].Value = 0.17;
//set named cell for VAT
workbook.DefinedNames.AddCell("VAT", Cell.Parse("F1"), exchangeRatesSheet);
//set named range for exchange rates
Range exchangeRatesRange = Range.Parse("A1:B3");
workbook.DefinedNames.AddRange("ExchangeRate", exchangeRatesRange, exchangeRatesSheet);
//defining headers in Prices sheet
pricesSheet["A1"].Value = "Product";
pricesSheet["B1"].Value = "Price";
pricesSheet["C1"].Value = "EUR";
pricesSheet["D1"].Value = "USD";
pricesSheet["E1"].Value = "GBP";
//setting headers style
var labelsRange = pricesSheet["A1", "E1"];
CellStyle headerStyle = new CellStyle();
headerStyle.Font.Bold = true;
headerStyle.Alignment.HAlign = HorizontalAlignment.Center;
labelsRange.SetStyle(headerStyle);
//defining products
pricesSheet["A2"].Value = "Xlio";
pricesSheet["B2"].Value = 50;
pricesSheet["A3"].Value = "Azzura";
pricesSheet["B3"].Value = 65;
//set formula for calculating prices in different currencies
string formulaString = "=LOOKUP(C$1, ExchangeRate)*$B2*(1+VAT)";
var sheetRange = pricesSheet["C2", "E3"];
sheetRange.SetFormula(formulaString);
workbook.Save(@"DefinedNames.xlsx");
Example shows creation of 2 sheets and named cells, ranges and formulas inside of them.
Named Cells
Named cell represents a cell that has a name (for example coefficient
) instead of location (for example B1
). Next snippet shows creation
of sheet inside a workbook with a named cell.
var workbook = new Workbook();
var sheet = new Sheet("Some Sheet");
workbook.Sheets.AddSheet(sheet);
Cell coefCell = Cell.Parse("B1");
sheet[coefCell].Value = 2;
workbook.DefinedNames.AddCell("coefficient", coefCell, sheet);
workbook.Save(@"W:/Output.xlsx");
Named cell is created with AddCell()
method which have 3 parameters:
Name
- name of the named cellCell
- instance of cell class, which defines location of the cellSheet
- instance of the sheet class, where named cell belongs
Named Ranges
Named range is a range with a name. It is useful in formulas, where instead of SUM(B2:F7)
you can write for example QuarterValues
.
AddRange()
method has similar parameters as AddCell()
, just instead of Cell
, specified Range
is used.
Range valuesRange = new Range("A1","A5");
workbook.DefinedNames.AddRange("values", valuesRange, sheet);
Named Formulas
Named formula represents defined formula which can be used on multiple places.
AddValue()
method is used for creation of named formula. Parameters are name
and formula
.
When you add named formula to defined names inside workbook, you can assign it to a cell.
workbook.DefinedNames.AddValue("definedFormula", "SUM(values)*coefficient");
sheet["A6"].Formula = "=definedFormula";