9using System.Globalization;
26 {
return Average(
null, range); }
35 {
return GetBasicFormula(target, range,
"AVERAGE",
null); }
44 {
return Ceil(
null, address, decimals); }
54 {
return GetBasicFormula(target,
new Range(address, address),
"ROUNDUP", decimals.
ToString(CultureInfo.InvariantCulture)); }
63 {
return Floor(
null, address, decimals); }
73 {
return GetBasicFormula(target,
new Range(address, address),
"ROUNDDOWN", decimals.
ToString(CultureInfo.InvariantCulture)); }
81 {
return Max(
null, range); }
90 {
return GetBasicFormula(target, range,
"MAX",
null); }
98 {
return Median(
null, range); }
107 {
return GetBasicFormula(target, range,
"MEDIAN",
null); }
115 {
return Min(
null, range); }
124 {
return GetBasicFormula(target, range,
"MIN",
null); }
133 {
return Round(
null, address, decimals); }
143 {
return GetBasicFormula(target,
new Range(address, address),
"ROUND", decimals.
ToString(CultureInfo.InvariantCulture)); }
151 {
return Sum(
null, range); }
160 {
return GetBasicFormula(target, range,
"SUM",
null); }
173 {
return VLookup(number,
null, range, columnIndex, exactMatch); }
186 {
return GetVLookup(
null,
new Address(), number, rangeTarget, range, columnIndex, exactMatch,
true); }
198 {
return VLookup(
null, address,
null, range, columnIndex, exactMatch); }
213 return GetVLookup(queryTarget, address, 0, rangeTarget, range, columnIndex, exactMatch,
false);
229 private static Cell GetVLookup(
Worksheet queryTarget,
Address address,
object number,
Worksheet rangeTarget,
Range range,
int columnIndex,
bool exactMatch,
bool numericLookup)
232 if (columnIndex < 1 || columnIndex > rangeWidth)
234 throw new FormatException(
"The column index on range " + range.
ToString() +
" can only be between 1 and " + rangeWidth);
236 CultureInfo culture = CultureInfo.InvariantCulture;
245 throw new FormatException(
"The lookup variable can only be a cell address or a numeric value. The passed value was null.");
247 Type t = number.GetType();
248 if (t == typeof(
byte))
249 { arg1 = ((byte)number).ToString(
"G", culture); }
250 else if (t == typeof(sbyte))
251 { arg1 = ((sbyte)number).ToString(
"G", culture); }
252 else if (t == typeof(decimal))
253 { arg1 = ((decimal)number).ToString(
"G", culture); }
254 else if (t == typeof(
double))
255 { arg1 = ((double)number).ToString(
"G", culture); }
256 else if (t == typeof(
float))
257 { arg1 = ((float)number).ToString(
"G", culture); }
258 else if (t == typeof(
int))
259 { arg1 = ((int)number).ToString(
"G", culture); }
260 else if (t == typeof(uint))
261 { arg1 = ((uint)number).ToString(
"G", culture); }
262 else if (t == typeof(
long))
263 { arg1 = ((long)number).ToString(
"G", culture); }
264 else if (t == typeof(ulong))
265 { arg1 = ((ulong)number).ToString(
"G", culture); }
266 else if (t == typeof(
short))
267 { arg1 = ((short)number).ToString(
"G", culture); }
268 else if (t == typeof(ushort))
269 { arg1 = ((ushort)number).ToString(
"G", culture); }
272 throw new FormatException(
"The lookup variable can only be a cell address or a numeric value. The value '" + number +
"' is invalid.");
277 if (queryTarget !=
null)
278 { arg1 = queryTarget.SheetName +
"!" + address; }
281 if (rangeTarget !=
null)
282 { arg2 = rangeTarget.SheetName +
"!" + range; }
284 arg3 = ParserUtils.ToString(columnIndex);
287 else { arg4 =
"FALSE"; }
288 return new Cell(
"VLOOKUP(" + arg1 +
"," + arg2 +
"," + arg3 +
"," + arg4 +
")", Cell.CellType.Formula);
300 private static Cell GetBasicFormula(Worksheet target, Range range,
string functionName,
string postArg)
307 else { arg2 =
"," + postArg; }
309 { prefix = target.SheetName +
"!"; }
310 else { prefix =
""; }
313 else { arg1 = prefix + range; }
314 return new Cell(functionName +
"(" + arg1 + arg2 +
")", Cell.CellType.Formula);
Class representing a cell of a worksheet.
Class representing a worksheet of a workbook.
Struct representing the cell address as column and row (zero based).
override string ToString()
Overwritten ToString method.
bool Equals(Address other)
Compares two addresses whether they are equal.
int Column
Column number (zero based).
Struct representing a cell range with a start and end address.
override string ToString()
Overwritten ToString method.
Address StartAddress
Start address of the range.
Address EndAddress
End address of the range.