数式の表示

広告

セルに数式を設定した場合、通常は計算結果が表示されますが計算結果ではなく数式そのものを表示させるかどうかを設定する方法を確認します。Excel上でなら「ツール」>「オプション」>「表示」で設定可能な項目です。設定するにはSheetインターフェースで用意されているsetDisplayFormulasメソッドを使います。

Sets whether the formulas are shown in a viewer

Parameters:
  show - whether to show formulas or not

引数には数式をそのまま表示するかどうかを表すboolean型の値を指定します。trueならば数式を表示し、falseならば計算結果を表示します。

実際の使い方は次のようになります。

InputStream in = new FileInputStream("filename.xls");
Workbook wb = WorkbookFactory.create(in);
Sheet sheet = wb.getSheetAt(0);

sheet.setDisplayFormulas(true);

この場合、数式が設定されているセルは数式そのものが表示されます。

サンプルプログラム

実際に試してみましょう。

Sample8_1.java

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample8_1{
  public static void main(String[] args){
    FileInputStream in = null;
    Workbook wb = null;

    try{
      in = new FileInputStream("sample.xls");
      wb = WorkbookFactory.create(in);
    }catch(IOException e){
      System.out.println(e.toString());
    }catch(InvalidFormatException e){
      System.out.println(e.toString());
    }finally{
      try{
        in.close();
      }catch (IOException e){
        System.out.println(e.toString());
      }
    }

    Sheet sheet0 = wb.getSheetAt(0);
    Sheet sheet1 = wb.getSheetAt(1);

    sheet0.setDisplayFormulas(false);
    sheet1.setDisplayFormulas(true);

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample8_1.xls");
      wb.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}

事前に下記のようなExcelファイルを用意してあります。二つのシートがあり、それぞれのシートには数値の入ったセルが二つと、その二つのセルの合計を表示する計算式が入ったセルが一つ設定してあります。

数式の表示

プログラムを実行すると、一つのシートは計算結果ではなく数式そのものを表示するように設定します。では作成されたExcelファイルを開いてみます。

数式の表示

数式の表示

2つ目のシートのD3セルが計算結果ではなく計算式が表示されていることが確認できます。(列の幅が何故か自動的に大きくなりました)。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)