美文网首页
Java 添加、读取Excel公式

Java 添加、读取Excel公式

作者: Tina_Tang | 来源:发表于2020-01-15 10:39 被阅读0次

           Excel是办公室自动化中非常重要的一款软件,具有强大的数据分析和处理功能。其中,Excel公式(包括函数)起了非常重要的作用。因此,掌握处理公式的能力有利于提高对Excel的应用水平,进而提高工作效率。本文将通过使用Java程序来演示如何添加、读取Excel公式。

    使用工具:Free Spire.XLS for Java (免费版)

    Jar文件获取及导入:

    方法1:通过官网下载获取jar包。解压后将lib文件夹下的Spire.Xls.jar文件导入Java程序。(如下图)

    方法2:通过maven仓库安装导入。具体安装教程详见此网页

    【示例1】添加Excel公式

    import com.spire.xls.*;

    public class InsertFormulas {

    public static void main(String[] args) {

    //创建Workbook对象

    Workbook workbook = new Workbook();

    //获取第一个工作表

    Worksheet sheet = workbook.getWorksheets().get(0);

    //声明两个变量

    int currentRow = 1;

    String currentFormula =null;

    //设置列宽

    sheet.setColumnWidth(1, 32);

     sheet.setColumnWidth(2, 16);

    //写入用于测试的数据到单元格

    sheet.getCellRange(currentRow,1).setValue("测试数据:");

    sheet.getCellRange(currentRow,2).setNumberValue(1);

    sheet.getCellRange(currentRow,3).setNumberValue(2);

    sheet.getCellRange(currentRow,4).setNumberValue(3);

    sheet.getCellRange(currentRow,5).setNumberValue(4);

    sheet.getCellRange(currentRow,6).setNumberValue(5);

    //写入文本

    currentRow += 2;

    sheet.getCellRange(currentRow,1).setValue("公式:") ; ;

    sheet.getCellRange(currentRow,2).setValue("结果:");

    //设置单元格格式

    CellRange range = sheet.getCellRange(currentRow,1,currentRow,2);

    range.getStyle().getFont().isBold(true);

    range.getStyle().setKnownColor(ExcelColors.LightGreen1);

    range.getStyle().setFillPattern(ExcelPatternType.Solid);

    range.getStyle().getBorders().getByBordersLineType(BordersLineType.EdgeBottom).setLineStyle(LineStyleType.Medium);

    //算数运算

    currentFormula = "=1/2+3*4";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //日期函数

    currentFormula = "=TODAY()";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

     sheet.getCellRange(currentRow,2).getStyle().setNumberFormat("YYYY/MM/DD");

    //时间函数

    currentFormula = "=NOW()";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    sheet.getCellRange(currentRow,2).getStyle().setNumberFormat("H:MM AM/PM");

    //IF函数

    currentFormula = "=IF(B1=5,\"Yes\",\"No\")";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //PI函数

    currentFormula = "=PI()";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //三角函数

    currentFormula = "=SIN(PI()/6)";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //计数函数

    currentFormula = "=Count(B1:F1)";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //最大值函数

    currentFormula = "=MAX(B1:F1)";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //平均值函数

    currentFormula = "=AVERAGE(B1:F1)";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //求和函数

    currentFormula = "=SUM(B1:F1)";

    sheet.getCellRange(++currentRow,1).setText(currentFormula);

    sheet.getCellRange(currentRow,2).setFormula(currentFormula);

    //保存文档

    workbook.saveToFile("output/InsertFormulas.xlsx",FileFormat.Version2013);

     }

    }

    公式添加效果:

    【示例2】读取Excel公式

    import com.spire.xls.*;

    public class ReadFormulas {

    public static void main(String[] args) {

    //创建Workbook对象

    Workbook workbook = new Workbook();

    //加载Excel文档

    workbook.loadFromFile("C:\\Users\\Test1\\Desktop\\InsertFormulas.xlsx");

    //获取第一个工作表

    Worksheet sheet = workbook.getWorksheets().get(0);

    //遍历B1到B13的单元格

    for (Object cell :sheet.getCellRange("B1:B13")) {

     CellRange cellRange =(CellRange) cell;

    //判断单元格是否含有公式

    if (cellRange.hasFormula()) {

    //打印单元格及公式

    String certainCell = String.format("单元格[%d, %d]含有公式:", cellRange.getRow(), cellRange.getColumn());

    System.out.println(certainCell +cellRange.getFormula());

                }

            }

        }

    }

    公式读取效果:

    (本文完)

    相关文章

      网友评论

          本文标题:Java 添加、读取Excel公式

          本文链接:https://www.haomeiwen.com/subject/aittzctx.html