数式の表示
セルに数式を設定した場合、通常は計算結果が表示されますが計算結果ではなく数式そのものを表示させるかどうかを設定する方法を確認します。Excel上でなら「ツール」>「オプション」>「表示」で設定可能な項目です。設定するにはSheetインターフェースで用意されているsetDisplayFormulasメソッドを使います。
void setDisplayFormulas(boolean show)
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);
この場合、数式が設定されているセルは数式そのものが表示されます。
サンプルプログラム
実際に試してみましょう。
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 )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。