OSBXLの全般的事項

JavaライブラリのAPIリファレンス となります。

ライセンスご購入の方は、APIの使い方自体はもちろんサポート範囲ですので、ご不明点がありましたら、お問い合わせフォームにてお問い合わせください。

Note

  • OSBXLは、microsoft社のVBA(マクロ)を参考にしてAPI設計されていますが、VBAとは別物です。
  • 同一ファイルの同時アクセスに対しても考慮されてますので、 Webサーバーのバックエンド側でExcelファイル生成に適しています。
  • メイン空間のcom.osboffice.osbxlだけでなく、com.osboffice.osbxl.dto, com.osboffice.osbxl.enums, com.osboffice.osbxl.chart というライブラリモジュール構成となっています。
  • - JNI経由で呼ばれるため、 Wrapperクラスを通じて、プログラムを書きます。
    (例えば、WorkBookWrapperクラスと、WorkBookWrapper.WorkBookクラスが存在しますが、必ずWrapperクラス経由でプログラムを書いてください。)
  • dtoと起動クラスであるAppWrapperクラスを除く各インスタンスは、osbxl内部で初期化されます。
    app = new AppWrapper() や fontobj = dto.FontObjectWwapper() のように、Appやdto は、プログラム中にてコンストラクタを用いて生成されますが、
    WorkBookインスタンスは、App#createWorkBookやApp#openWorkBookメソッドで生成され、プログラム中で、コンストラクタを用いて生成されるわけではありません。
    wb = app.createWorkBookのようなメソッドを通じた変数割り当てを行います。
  • 処理の終了時に、Workbookのcloseメソッドの呼び出しを忘れないでください。
    closeメソッドで、バックエンド側(C++)内に確保している該当WorkBookに関するメモリやリソースの解放を行います。
    さもなければ、nodeosbxl.App() にて取得したエントリ変数がPython上、利用不可能になるまでメモリ上に残ります。
    ただし、エントリポイントが、Node上でGC(ガーベッジコレクション)されたタイミングで関連メモリが消去されますので、メモリリークの心配はありません。
    (この時点で、エントリ変数で保持している全てのWorkbookWrapperのcloseメソッドが内部で呼ばれます)
  • OSBXLでは、getCellsメソッドのように、 原則、序数は1から始まります。(0からではありません)
    ただし、例外的に、-1 や 0 を特別な意味で用いることはあります。
    コーディング時に、各APIの詳細リファレンスのご確認をお勧めします。
  • OSBXLのセル範囲は、大文字で記述します。(例:A3:F4)
    絶対参照記号は、Excel同様、$文字です。(例:$A$3:F4)
    列範囲(例:G:H)、行範囲(例:10:11) は、Range#getRangeやgetCellsメソッドではセル範囲としては取得できませんが、関数においては利用可能です(値の取得も可能です)。
    また、セル範囲の数値表記とA1C1表記の相互変換ユーティリティーをAppクラスに用意していますので、(例:AppWrapper#convertFromRowColNumber)
    ご活用ください。
    (例:セル範囲(Z4) と 数値範囲(4,26) の相互変換が可能です。)
  • 関数計算エンジンは、 関数設定時(setFormulaメソッド)に値も計算され、ワークシートのセルに保存 されます。(getValueメソッドで、値の取得も可能です)
    array関数Spill機能 (関数の実行結果が複数値を返してきた場合、全てのセルに値を設定する機能)も利用可能です。
    DataTableも利用可能 です(行方向のみ、列方向のみ、行列法方向両方)の全てのパターンが利用可能です。
  • Chartに関しては、 RegionMap関数を除いた他のチャート種別全てをサポート しています。
    (読み込み、作成、削除、修正(チャート種別変更含む))が全て可能です。
  • 他ワークブックの取り込みも可能 です(Excelの仕様上、取り込み時にデータのキャッシュを作成し、更新しない限り、データが変更されません)
  • 新規ワークブックは、内容が空のSheet1を予め含んでいます。 それ以外のシートは追加する必要があります。
    AppWrapper#createWorkBookメソッドで、既定フォントとそのサイズを設定可能なので、ご活用ください。
  • パスワード付きワークブックは、 日本語のパスワードも可能 です。
  • セルの書式設定は、日付関連(元号等)を含め、日本語版のセル書式が適用 されますので、ご留意ください。

以下のコードは、ExcelのWorkBookを新規作成するサンプルです。

import java.io.IOException;

import com.osboffice.osbxl.AppWrapper;
import com.osboffice.osbxl.WorkBookWrapper;
import com.osboffice.osbxl.WorkSheetWrapper;
import com.osboffice.osbxl.dto.ColorObjectWrapper;
import com.osboffice.osbxl.dto.FontObjectWrapper;
import com.osboffice.osbxl.enums.XlFont;
import com.osboffice.osbxl.enums.XlThemeColor;

public void createExcelFile() throws IOException, Exception {

    AppWrapper app = new AppWrapper();
    WorkBookWrapper wb = app.createWorkBook("hello.xlsx", XlFont.MS_PGOTHIC, 12.0); // 既定のフォントがMSPGOTHIC(12ポイント)のワークブックを作成します
    WorkSheetWrapper ws = wb.openWorkSheet("Sheet1"); // ワークシートSheet1を開きます(新規ワークブックは、Sheet1を予め含んでいます。それ以外のシートは追加する必要があります)

    for (int i = 1; i < 6; i++) {
        for (int j = 1; j < 27; j++) {
            int num = (i - 1) * 5 + (j - 1);
            ws.getCells(i, j).setNumberValue(num); // セル範囲([1,1]=A1 から[5,26]=Z5)に数値を書き込みます
        }
    }

    for (int i = 6; i < 11; i++) {
        for (int j = 1; j < 27; j++) {
        String aCell = app.convertFromRowColNumber(i - 5, j); // 数値からセル参照文字列を作ります
        String formula = aCell + " * 2 + 1"; // 数式を作ります
        ws.getCells(i,j).setFormula(formula); // 数式を設定します

        FontObjectWrapper fontobj = new FontObjectWrapper(); // フォントを設定するためのオブジェクトです。
        fontobj.setBold(true); // 太字に設定します
        fontobj.setSize(14);   // フォントサイズを設定します
        ColorObjectWrapper colorobj = new ColorObjectWrapper();
        colorobj.setThemeColor(XlThemeColor.ThemeColorAccent1); // テーマカラーでフォントを設定します。
        fontobj.setColorObject(colorobj); // フォント色を設定します
        ws.getCells(i,j).getFont().setObject(fontobj); // 各セルにfontオブジェクトを設定します。
        }
    }

    wb.save(); // ワークブックを保存します。
    wb.close(); // ワークブックを閉じます。(メモリ解放のため、必要です)
}