zoukankan      html  css  js  c++  java
  • C# 处理Excel公式(一)——创建、读取Excel公式

    对于数据量较大的表格,需要计算一些特殊数值时,我们通过运用公式能有效提高我们数据处理的速度和效率,对于后期数据的增删改查等的批量操作也很方便。此外,对于某些数值的信息来源,我们也可以通过读取数据中包含的公式来获取。下面的示例中将分享通过C# 来创建、读取Excel公式的方法。

    工具使用

    下载安装该类库后,注意在程序中添加引用Spire.Xls.dll(dll文件可在安装路径下的Bin文件夹中获取)

    代码示例(供参考)

    【示例1】创建Excel公式

    步骤 1 :新建工作簿

    Workbook workbook = new Workbook();
    Worksheet sheet = workbook.Worksheets[0];

    步骤 2 : 添加测试数据及文本,并设置文本格式等

    //初始化currentRow、currentFormula
    int currentColumn = 1;
    int currentRow = 1;
    string currentFormula = string.Empty;
    
    //设置1、2列列宽
    sheet.SetColumnWidth(1, 20);
    sheet.SetColumnWidth(2, 12);
    
    //写入测试数据
    sheet.Range[currentColumn, 1].Value = "测试数据:";
    sheet.Range[currentColumn, 2].NumberValue = 10;
    sheet.Range[currentColumn, 3].NumberValue = 20; 
    sheet.Range[currentColumn, 4].NumberValue = 30;
    sheet.Range[currentColumn, 5].NumberValue = 40;
    sheet.Range[currentColumn, 6].NumberValue = 50;
    
    //写入文本并设置区域格式
    currentRow += 2;
    sheet.Range[currentRow, 1].Value = "公式"; 
    sheet.Range[currentRow, 2].Value = "结果";
    CellRange range = sheet.Range[currentRow, 1, currentRow, 2];
    range.Style.Font.IsBold = true;
    range.Style.KnownColor = ExcelColors.LightGreen1;
    range.Style.FillPattern = ExcelPatternType.Solid;
    range.Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Medium;

    步骤 3 :写入函数

    //算术运算
    currentFormula = "=1/2+3*4";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    
    //日期函数
    currentFormula = "=Today()";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    sheet.Range[currentRow, 2].Style.NumberFormat = "YYYY/MM/DD";
    
    //时间函数
    currentFormula = "=NOW()";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    sheet.Range[currentRow, 2].Style.NumberFormat = "H:MM AM/PM";
    
    //IF逻辑函数
    currentFormula = "=IF(B1=5,"Yes","No")";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    
    //PI函数
    currentFormula = "=PI()";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    
    //三角函数
    currentFormula = "=SIN(PI()/6)";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    
    //计数函数
    currentFormula = "=Count(B1:F1)";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    
    //求最大值函数
    currentFormula = "=MAX(B1:F1)";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    
    //平均值函数
    currentFormula = "=AVERAGE(B1:F1)";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;
    
    //求和函数
    currentFormula = "=SUM(B1:F1)";
    sheet.Range[++currentRow, 1].Text = currentFormula;
    sheet.Range[currentRow, 2].Formula = currentFormula;

    步骤 4 :保存文档

    workbook.SaveToFile("Excel公式.xlsx", FileFormat.Version2013);
    System.Diagnostics.Process.Start("Excel公式.xlsx");

    完成代码后,调试运行程序,生成文档:

    全部代码:

    using Spire.Xls;
    
    namespace CreateFormula
    {
        class Program
        {
            static void Main(string[] args)
            {
                //新建一个工作簿,获取第一张工作表
                Workbook workbook = new Workbook();
                Worksheet sheet = workbook.Worksheets[0];
    
                //初始化currentRow、currentFormula
                int currentColumn = 1;
                int currentRow = 1;
                string currentFormula = string.Empty;
    
                //设置1、2列列宽
                sheet.SetColumnWidth(1, 20);
                sheet.SetColumnWidth(2, 12);
    
                //写入测试数据
                sheet.Range[currentColumn, 1].Value = "测试数据:";
                sheet.Range[currentColumn, 2].NumberValue = 10;
                sheet.Range[currentColumn, 3].NumberValue = 20; 
                sheet.Range[currentColumn, 4].NumberValue = 30;
                sheet.Range[currentColumn, 5].NumberValue = 40;
                sheet.Range[currentColumn, 6].NumberValue = 50;
    
                //写入文本并设置区域格式
                currentRow += 2;
                sheet.Range[currentRow, 1].Value = "公式"; 
                sheet.Range[currentRow, 2].Value = "结果";
                CellRange range = sheet.Range[currentRow, 1, currentRow, 2];
                range.Style.Font.IsBold = true;
                range.Style.KnownColor = ExcelColors.LightGreen1;
                range.Style.FillPattern = ExcelPatternType.Solid;
                range.Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Medium;
    
                //算术运算
                currentFormula = "=1/2+3*4";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //日期函数
                currentFormula = "=Today()";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
                sheet.Range[currentRow, 2].Style.NumberFormat = "YYYY/MM/DD";
    
                //时间函数
                currentFormula = "=NOW()";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
                sheet.Range[currentRow, 2].Style.NumberFormat = "H:MM AM/PM";
    
                //IF逻辑函数
                currentFormula = "=IF(B1=5,"Yes","No")";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //PI函数
                currentFormula = "=PI()";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //三角函数
                currentFormula = "=SIN(PI()/6)";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //计数函数
                currentFormula = "=Count(B1:F1)";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //求最大值函数
                currentFormula = "=MAX(B1:F1)";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //平均值函数
                currentFormula = "=AVERAGE(B1:F1)";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //求和函数
                currentFormula = "=SUM(B1:F1)";
                sheet.Range[++currentRow, 1].Text = currentFormula;
                sheet.Range[currentRow, 2].Formula = currentFormula;
    
                //保存文档并打开
                workbook.SaveToFile("Excel公式.xlsx", FileFormat.Version2013);
                System.Diagnostics.Process.Start("Excel公式.xlsx");
            }
        }
    }
    View Code

    【示例2】读取Excel公式

    步骤 1 :实例化Workbook类,加载测试文档

    Workbook workbook = new Workbook();
    workbook.LoadFromFile("test.xlsx");

    步骤 2 :获取工作表

    Worksheet sheet = workbook.Worksheets[0];

    步骤 3:读取公式

    //遍历[B1:B13]的单元格
    foreach (var cell in sheet.Range["B1:B13"])
    {
        //判断是否含有公式
        if (cell.HasFormula)
        {
            //输出含有公式的单元格及公式
            string certainCell = String.Format("Cell[{0},{1}]", cell.Row, cell.Column);
            Console.WriteLine(certainCell + " 含有公式: " + cell.Formula);
        }
    }
    Console.ReadLine();

    公式读取结果:

    全部代码:

    using Spire.Xls;
    using System;
    
    namespace ReadFormula
    {
        class Program
        {
            static void Main(string[] args)
            {
                //实例化一个Workbook
                Workbook workbook = new Workbook();
    
                //加载测试文档
                workbook.LoadFromFile("test.xlsx");
    
                //获取第一个工作表
                Worksheet sheet = workbook.Worksheets[0];
    
                //遍历[B1:B13]的单元格
                foreach (var cell in sheet.Range["B1:B13"])
                {
                    //判断是否含有公式
                    if (cell.HasFormula)
                    {
                        //输出含有公式的单元格及公式
                        string certainCell = String.Format("Cell[{0},{1}]", cell.Row, cell.Column);
                        Console.WriteLine(certainCell + " 含有公式: " + cell.Formula);
                    }
                }
                Console.ReadLine();
            }
        }
    }
    View Code

    以上是本次关于“C# 创建、读取Excel公式”的全部内容。

    (本文完)

  • 相关阅读:
    Linux下Mysql自启动
    C++的Vector用法
    如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)
    windows自带记事本导致文本文件(UTF-8编码)开头三个字符乱码问题
    C/C++字符串查找函数
    C++ string 字符串查找匹配
    CentOS6.5升级autoconf版本 Autoconf version 2.64 or higher is required
    Linux命令之远程下载命令:wget
    Linux常用命令大全
    如何使用VisualStudio2013编写和调试c语言程序
  • 原文地址:https://www.cnblogs.com/Yesi/p/9707429.html
Copyright © 2011-2022 走看看