チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Java»Spire.XLS for Java»数式»Java:Excel で数式や関数を挿入、読み込む方法
2023-04-26

Java:Excel で数式や関数を挿入、読み込む方法

Excel にはデータを記録する以外に計算機能があり、データの分析や加工を効率的かつ簡単に行うことができます。Excel の計算ツールには、数式と関数の2つがあります。数式はユーザーが定義した計算文であり、関数はあらかじめ定義された数式です。ユーザーは、セルに自分の数式を入力するか、関数を呼び出すだけで計算することができます。この記事では、Spire.XLS for Java を使用して、Excel ワークブックに数式や関数を挿入したり、読み込んだりする方法を紹介します。

Spire.XLS for Java をインストールします

まず、Spire.XLS for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>12.12.4</version>
    </dependency>
</dependencies>

Excel ワークシートに数式や関数を挿入する

Spire.XLS for Java では、特定のセルに数式や関数を追加するための Worksheet.getCellRange().setFormula() メソッドを用意しています。ワークシートに数式や関数を挿入する詳細な手順は以下の通りです。

  • Workbook のオブジェクトを作成します。
  • Workbook.getWorksheets().get() メソッドを使用して、最初のワークシートを取得します。
  • セルにデータを書き込み、セルの書式を設定します。
  • Worksheet.getCellRange().setFormula() メソッドを使用して、特定のセルに数式や関数を追加します。
  • Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
  • Java
import com.spire.xls.*;

public class insertFormulas {
    public static void main(String[] args) {

        //Workbookのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //最初のワークシートを取得する
        Worksheet sheet = workbook.getWorksheets().get(0);

        //currentRow、currentFormulaの2つの変数を宣言する
        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("数式の挿入.xlsx",FileFormat.Version2013);

    }
}

Java:Excel で数式や関数を挿入、読み込む方法

Excel ワークシートから数式や関数を読み込む

Excel のワークシートで数式を読み込むには、CellRange.hasFormula() メソッドを使用して、セルに数式が含まれているかどうかを検出することができます。そして、CellRange.getFormula() メソッドを使用して、数式がある場合はその数式を取得します。詳しい手順は以下の通りです。

  • Workbook のオブジェクトを作成します。
  • Workbook.loadFromFile() メソッドを使用して Excel ワークブックを読み込みます。
  • Workbook.getWorksheets().get() メソッドを使用してワークシートを取得します。
  • ワークシート内のセルをループ処理します。
  • CellRange.hasFormula() メソッドを使用して、セルに数式が含まれているかどうかを検出します。数式が含まれている場合は、CellRange.getFormula() メソッドを使用して数式を取得し、それを出力します。
  • Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
  • Java
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class readFormulas {

    public static void main(String[] args) {

        //Workbookのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //Excelファイルを読み込む
        workbook.loadFromFile("数式の挿入.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 で数式や関数を挿入、読み込む方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 962 times