FormulaSamplesCS

 
using System;

using GemBox.Spreadsheet;

namespace Samples
{
    /// <summary>
    /// Formula samples.
    /// </summary>
    class FormulaSamplesCS
    {
        [STAThread]
        static void Main(string[] args)
        {
            // TODO: If using GemBox.Spreadsheet Professional, put your serial key below.
            // Otherwise, if you are using GemBox.Spreadsheet Free, comment out the 
            // following line (Free version doesn't have SetLicense method). 
            // SpreadsheetInfo.SetLicense("YOUR-SERIAL-KEY-HERE");

            ExcelFile excelFile = new ExcelFile();

            CreateFormulaSheets(excelFile);

            string fileName = "FormulasCS.xls";
            excelFile.SaveXls(fileName);
            // Uncomment if you want to export in XLSX.
            //string fileName = "FormulasCS.xlsx";
            //excelFile.SaveXlsx(fileName);

            TryToDisplayGeneratedFile(fileName);
        }

        static void CreateFormulaSheets(ExcelFile excelFile)
        {
            int rowIndex = 0;

            ExcelWorksheet sheet1 = excelFile.Worksheets.Add("sheet1");
            ExcelWorksheet sheet2 = excelFile.Worksheets.Add("sheet2");

            sheet1.Columns[0].Width = 35 * 256;
            sheet1.Columns[1].Width = 15 * 256;
            sheet1.Columns[2].Width = 15 * 256;

            sheet1.Cells[rowIndex++, 0].Value = "Examples of typical formulas usage:";

            sheet1.Cells[++rowIndex, 0].Value = "Some data:";
            sheet1.Cells[rowIndex, 1].Value = 3;
            sheet1.Cells[rowIndex, 2].Value = 4.1;
            sheet1.Cells[++rowIndex, 1].Value = 5.2;
            sheet1.Cells[rowIndex, 2].Value = 6;
            sheet1.Cells[++rowIndex, 1].Value = 7;
            sheet1.Cells[rowIndex++, 2].Value = 8.3;

            // Named ranges.
            string namedRange = "Range1";
            sheet1.NamedRanges.Add(namedRange, sheet1.Cells.GetSubrange("B3", "C4"));

            // Floats without first digit.
            sheet1.Cells[++rowIndex, 0].Value = "Float number without first digit:";
            sheet1.Cells[rowIndex, 1].Formula = "=.5/23+.1-2";

            // Function using named range.
            sheet1.Cells[++rowIndex, 0].Value = "Named range:";
            sheet1.Cells[rowIndex, 1].Formula = "=SUM(" + namedRange + ")";

            // 3D sheet references.
            sheet1.Cells[++rowIndex, 0].Value = "3d sheet reference:";
            sheet1.Cells[rowIndex, 1].Formula = "=sheet2!$C$2";

            // 3D area sheet references.
            sheet1.Cells[++rowIndex, 0].Value = "3d area sheet reference:";
            sheet1.Cells[rowIndex, 1].Formula = "=AVERAGE(sheet2!$A$2:C$2)";

            // Function's miss argument.
            sheet1.Cells[++rowIndex, 0].Value = "Function's miss arguments:";
            sheet1.Cells[rowIndex, 1].Formula = "=Count(1,  ,  ,,,2, 23,,,,,, 34,,,54,,,,  ,)";

            // Functions are case-insensitive.
            sheet1.Cells[++rowIndex, 0].Value = "Functions are case-insensitive:";
            sheet1.Cells[rowIndex, 1].Formula = "=cOs( 1 )";

            // Functions.
            sheet1.Cells[++rowIndex, 0].Value = "Supported functions:";

            string nextFunction;
            sheet1.Cells[++rowIndex, 0].Value = "Results";
            sheet1.Cells[rowIndex++, 1].Value = "Formulas";

            nextFunction = "=NOW()+123";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=SECOND(12)/23";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=MINUTE(24)-1343/35";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=(HOUR(56)-23/35)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=WEEKDAY(5)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=YEAR(23)-WEEKDAY(5)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=MONTH(3)-2342/235345";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=((DAY(1)))";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=TIME(1,2,3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=DATE(1,2,3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=RAND()";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=TEXT(\"text\", \"$d\")";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=VAR(1,2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=MOD(1,2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=NOT(FALSE)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=OR(FALSE)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=AND(TRUE)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=FALSE()";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=TRUE()";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=VALUE(3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=LEN(\"hello\")";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=MID(\"hello\",1,1)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=ROUND(1,2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=SIGN(-2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=INT(3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=ABS(-3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=LN(2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=EXP(4)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=SQRT(2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=PI()";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=COS(4)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=SIN(3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=MAX(1,2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=MIN(1,2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=AVERAGE(1,2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=SUM(1,3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=IF(1,2,3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=COUNT(1,2,3)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            nextFunction = "=SUBTOTAL(1,sheet2!A2:C2)";
            sheet1.Cells[rowIndex, 0].Formula = nextFunction;
            sheet1.Cells[rowIndex++, 1].Value = nextFunction;

            // Paranthless checks.
            sheet1.Cells[++rowIndex, 0].Value = "Paranthless:";
            sheet1.Cells[rowIndex, 1].Formula = "=((12+2343+34545))";

            // Unary operators.
            sheet1.Cells[++rowIndex, 0].Value = "Unary operators:";
            sheet1.Cells[rowIndex, 1].Formula = "=B5%";
            sheet1.Cells[rowIndex, 2].Formula = "=+++B5";

            // Operand tokens, bool.
            sheet1.Cells[++rowIndex, 0].Value = "Bool values:";
            sheet1.Cells[rowIndex, 1].Formula = "=TRUE";
            sheet1.Cells[rowIndex, 2].Formula = "=FALSE";

            // Operand tokens, int.
            sheet1.Cells[++rowIndex, 0].Value = "Integer values:";
            sheet1.Cells[rowIndex, 1].Formula = "=1";
            sheet1.Cells[rowIndex, 2].Formula = "=20";

            // Operand tokens, num.
            sheet1.Cells[++rowIndex, 0].Value = "Float values:";
            sheet1.Cells[rowIndex, 1].Formula = "=.4";
            sheet1.Cells[rowIndex, 2].Formula = "=2235.5132";

            // Operand tokens, str.
            sheet1.Cells[++rowIndex, 0].Value = "String values:";
            sheet1.Cells[rowIndex, 1].Formula = "=\"hello world!\"";

            // Operand tokens, error.
            sheet1.Cells[++rowIndex, 0].Value = "Error values:";
            sheet1.Cells[rowIndex, 1].Formula = "=#NULL!";
            sheet1.Cells[rowIndex, 2].Formula = "=#DIV/0!";

            // Binary operators.
            sheet1.Cells[++rowIndex, 0].Value = "Binary operators:";
            sheet1.Cells[rowIndex, 1].Formula = "=(1)-(2)+(3/2+34)/2+12232-32-4";

            // Another sheet.
            rowIndex = 0;
            sheet2.Cells[rowIndex++, 0].Value = "Some data on another sheet:";
            sheet2.Cells[rowIndex, 0].Value = 33;
            sheet2.Cells[rowIndex, 1].Value = 44.1;
            sheet2.Cells[rowIndex, 2].Value = 55.2;
            sheet2.Cells[++rowIndex, 0].Value = 66;
            sheet2.Cells[rowIndex, 1].Value = 77;
            sheet2.Cells[rowIndex, 2].Value = 88.3;
        }

        static void TryToDisplayGeneratedFile(string fileName)
        {
            try
            {
                System.Diagnostics.Process.Start(fileName);
            }
            catch (Exception)
            {
                Console.WriteLine(fileName + " created in application folder.");
            }
        }
    }
}

 

Fast and Easy Read/Write Excel File .NET Component