溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

java怎樣實(shí)現(xiàn)創(chuàng)建和讀取excel中的公式?

發(fā)布時(shí)間:2020-05-22 17:42:54 來(lái)源:億速云 閱讀:340 作者:鴿子 欄目:編程語(yǔ)言

操作excel表格用公式來(lái)處理數(shù)據(jù)時(shí),可通過(guò)創(chuàng)建公式來(lái)運(yùn)算數(shù)據(jù),或通過(guò)讀取公式來(lái)獲取數(shù)據(jù)信息來(lái)源。這里使用了java類(lèi)庫(kù)(Free Spire.XLS for Java 免費(fèi)版)獲取文件包后,解壓,將lib文件夾下的jar文件導(dǎo)入Java程序。

如圖:

java怎樣實(shí)現(xiàn)創(chuàng)建和讀取excel中的公式?

1、創(chuàng)建公式

import com.spire.xls.*;

public class AddFormula {
    public static void main(String[] args) {
        //創(chuàng)建Workbook對(duì)象
        Workbook wb = new Workbook();

        //獲取第一個(gè)工作表
        Worksheet sheet = wb.getWorksheets().get(0);

        //聲明兩個(gè)變量
        int currentRow = 1;
        String currentFormula = null;

        //設(shè)置列寬
        sheet.setColumnWidth(1, 32);
        sheet.setColumnWidth(2, 16);

        //寫(xiě)入用于測(cè)試的數(shù)據(jù)到單元格
        sheet.getCellRange(currentRow,1).setValue("測(cè)試數(shù)據(jù):");
        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);

        //寫(xiě)入文本
        currentRow += 2;
        sheet.getCellRange(currentRow,1).setValue("公式:") ; ;
        sheet.getCellRange(currentRow,2).setValue("結(jié)果:");

        //設(shè)置單元格格式
        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);

        //算數(shù)運(yùn)算
        currentFormula = "=1/2+3*4";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //日期函數(shù)
        currentFormula = "=TODAY()";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);
        sheet.getCellRange(currentRow,2).getStyle().setNumberFormat("YYYY/MM/DD");

        //時(shí)間函數(shù)
        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函數(shù)
        currentFormula = "=IF(B1=5,\"Yes\",\"No\")";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //PI函數(shù)
        currentFormula = "=PI()";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //三角函數(shù)
        currentFormula = "=SIN(PI()/6)";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //計(jì)數(shù)函數(shù)
        currentFormula = "=Count(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //最大值函數(shù)
        currentFormula = "=MAX(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //平均值函數(shù)
        currentFormula = "=AVERAGE(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //求和函數(shù)
        currentFormula = "=SUM(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText(currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //保存文檔
        wb.saveToFile("AddFormulas.xlsx",FileFormat.Version2013);
        wb.dispose();
    }
}

公式創(chuàng)建結(jié)果:

java怎樣實(shí)現(xiàn)創(chuàng)建和讀取excel中的公式?

2、讀取公式

import com.spire.xls.*;

public class ReadFormula {
    public static void main(String[] args) {
        //加載Excel文檔
        Workbook wb = new Workbook();
        wb.loadFromFile("AddFormulas.xlsx");

        //獲取第一個(gè)工作表
        Worksheet sheet = wb.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());
            }
        }
    }
}

公式讀取結(jié)果:

java怎樣實(shí)現(xiàn)創(chuàng)建和讀取excel中的公式?

以上就是java實(shí)現(xiàn)在excel中創(chuàng)建及讀取公式的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI