クラス ExcelModel

java.lang.Object
org.opengion.fukurou.model.ExcelModel

public final class ExcelModel extends Object
POI による、EXCELバイナリファイルに対する、データモデルクラスです。 共通的な EXCEL処理 を集約しています。 staticメソッドによる簡易的なアクセスの他に、順次処理も可能なように 現在アクセス中の、Workbook、Sheet、Row、Cell オブジェクトを内部で管理しています。 入力形式は、openXML形式にも対応しています。 ファイルの内容に応じて、.xlsと.xlsxのどちらで読み取るかは、内部的に 自動判定されます。
変更履歴:
6.0.2.0 (2014/09/19) 新規作成, 8.1.2.3 (2022/05/20) テキスト変換処理 復活
機能分類
その他
導入されたバージョン:
JDK7.0,
  • コンストラクタの概要 リンク・アイコン

    コンストラクタ
    コンストラクタ
    説明
    EXCELファイルのWookbookのデータ処理モデルを作成します。
    ExcelModel(File file, boolean isOpen)
    EXCELファイルのWookbookのデータ処理モデルを作成します。
  • メソッドの概要 リンク・アイコン

    修飾子とタイプ
    メソッド
    説明
    void
    activeWorkbook(boolean isCellDel)
    Workbook の全Sheetを対象に、空行を取り除き、全体をシュリンクします。
    void
    指定の Workbook の全Sheetを対象に、実際の有効行と有効カラムを元に全体をシュリンクします。
    void
    addImageFile(String imgFile, int shtNo, int rowNo, int colNo)
    指定のシートの行・列の箇所に、イメージファイルを挿入します。
    void
    addImageFile(String imgFile, int shtNo, int row1, int col1, int row2, int col2, int dx1, int dy1, int dx2, int dy2)
    指定のシートの行・列の箇所に、イメージファイルを挿入します。
    void
    createRow(int rowNo)
    Excelの指定行のRowオブジェクトを作成します。
    void
    createSheet(String shtName, boolean isOverwrite)
    内部 Workbookより、新しいSheetを作ります。
    int
    内部 Workbookの 現在Sheet の最初の行番号を返します。
    int
    内部 Workbookの 現在Sheet の最後の行番号を返します。
    名前定義一覧を内部の Workbook から取得します。
    int
    内部 Workbookの Sheet数を返します。
    getSheetName(int shtNo)
    内部 Workbook の 指定のSheet番号のシート名前を返します。
    シート一覧を、内部の Workbook から取得します。
    int
    getSheetNo(String shtName)
    内部 Workbook の 指定のSheet名のシート番号を返します。
    書式のスタイル一覧を内部の Workbook から取得します。
    getValue(int rowNo, int colNo)
    現在のrow にあるセルの属性値を返します。
    getValues(int rowNo)
    現在のRow にあるセルの属性値を配列で返します。
    static void
    main(String[] args)
    アプリケーションのサンプルです。
    void
    removeCell(int startCellNum)
    Excelの処理中のRowオブジェクトの指定カラム以降の余計なCellオブジェクトを削除します。
    void
    removeRow(int startRowNum)
    Excelの指定行以降の余計なRowオブジェクトを削除します。
    void
    removeSheet(int fromNo, int toNo)
    Excelの指定Sheetオブジェクトを削除します。
    void
    saveFile(File file)
    内部 Workbook オブジェクトをファイルに書き出します。
    void
    Sheet一覧を先頭Sheetに作成する場合のSheet名を指定します。
    void
    setCellLink(String linkVal, int colNo)
    Excelの指定セルにHyperlinkを設定します。
    void
    データ設定する セルに、罫線を追加します。
    void
    setCellValue(String dataVal, int colNo)
    Excelの指定セルにデータを設定します。
    void
    setCellValue(String dataVal, int colNo, boolean isNumber)
    Excelの指定セルにデータを設定します。
    void
    データ行の書き込み開始位置の行番号を設定します。
    void
    setFont(String fontName, short fontPoint)
    内部 Workbook に、フォント名、フォントサイズを設定します。
    void
    EXCELで、出力処理の最後にセルの計算式の再計算をさせるシート名の配列を指定します。
    void
    setRefSheetName(String refSheetName)
    内部 Workbookより、雛形Sheetをセットします。
    void
    setSheetName(int shtNo, String shtName)
    内部 Workbook の指定のシート番号の Sheet の名前を設定します。
    void
    setValues(String[] vals, int rowNo)
    row にあるセルのオブジェクト値を設定します。
    void
    setValues(String[] vals, int rowNo, boolean[] isNums)
    row にあるセルのオブジェクト値を設定します。
    void
    Workbook の雛形シートのTextConverter した、新しいSheetを作成します。
    void
    sheetSelected(boolean isSelect)
    現在のシートを選択済み(true)か、非選択済み(false)に設定します。
    void
    Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。
    void
    Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。
    void
    useAutoCellSize(boolean flag)
    全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。
    void
    useAutoCellSize(boolean flag, int count)
    全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。
    void
    xssfShapeScan(BiConsumer<org.apache.poi.xssf.usermodel.XSSFSimpleShape,String> bicon)
    Workbook の全SheetのShapeを対象に、テキストをスキャンします(XSLX限定)。

    クラスから継承されたメソッド java.lang.Object リンク・アイコン

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細 リンク・アイコン

    • ExcelModel リンク・アイコン

      public ExcelModel(File file)
      EXCELファイルのWookbookのデータ処理モデルを作成します。 ここでは、既存のファイルを読み込んで、データ処理モデルを作成しますので、 ファイルがオープンできなければエラーになります。
      パラメータ:
      file - EXCELファイル
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更
    • ExcelModel リンク・アイコン

      public ExcelModel(File file, boolean isOpen)
      EXCELファイルのWookbookのデータ処理モデルを作成します。 isOpen条件によって、ファイルオープン(true)か、新規作成(false)が分かれます。 ファイルオープンの場合は、EXCELの読み込み以外に、追記するとか、雛形参照する 場合にも、使用します。 ファイルオープンの場合は、当然、ファイルがオープンできなければエラーになります。 isOpen=新規作成(false) の場合は、ファイル名の拡張子で、XSSFWorkbook か HSSFWorkbook を 判定します。.xlsx の場合⇒XSSFWorkbook オブジェクトを使用します。
      パラメータ:
      file - EXCELファイル
      isOpen - true:ファイルオープン/false:新規作成
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.0.2.3 (2014/10/10) POIUtil#createWorkbook( String ) を使用するように変更, 6.1.0.0 (2014/12/26) 入力ファイルの拡張子判定の対応, 6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更, 6.2.2.0 (2015/03/27) マクロ付Excel(.xlsm)対応, 6.3.7.0 (2015/09/04),5.9.0.0 (2015/09/04) 標準を、SXSSFWorkbook に切り替えてみる。
  • メソッドの詳細 リンク・アイコン

    • setFont リンク・アイコン

      public void setFont(String fontName, short fontPoint)
      内部 Workbook に、フォント名、フォントサイズを設定します。 fontName(フォント名)は、"MS Pゴシック" など名称になります。 fontPoint は、フォントの大きさを指定します。 内部的には、setFontHeightInPoints(short)メソッドで設定します。
      パラメータ:
      fontName - フォント名 ("MS Pゴシック" など。nullの場合セットしません)
      fontPoint - フォントの大きさ (0やマイナスの場合はセットしません)
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setCellStyle リンク・アイコン

      public void setCellStyle()
      データ設定する セルに、罫線を追加します。 ここで設定するのは、罫線の種類と、罫線の色ですが、内部的に固定にしています。 Border=CellStyle.BORDER_THIN BorderColor=IndexedColors.BLACK
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX)
    • useAutoCellSize リンク・アイコン

      public void useAutoCellSize(boolean flag)
      全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。 autoSize設定で、カラム幅が大きすぎる場合、現状では、 初期カラム幅の5倍を限度にしています。 なお、autoSizeColumn設定は負荷の大きな処理なので、saveFile(String)の 中で実行されます。(セーブしなければ実行されません。) よって、指定は、いつ行っても構いません。
      パラメータ:
      flag - autoSizeColumn設定を行うかどうか [true:自動カラム幅設定を行う/false:行わない]
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • useAutoCellSize リンク・アイコン

      public void useAutoCellSize(boolean flag, int count)
      全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。 autoSize設定で、カラム幅が大きすぎる場合、現状では、 初期カラム幅のcount倍を限度に設定します。 ただし、count がマイナスの場合は、無制限になります。 なお、autoSizeColumn設定は負荷の大きな処理なので、saveFile(String)の 中で実行されます。(セーブしなければ実行されません。) よって、指定は、いつ行っても構いません。
      パラメータ:
      flag - autoSizeColumn設定を行うかどうか [true:自動カラム幅設定を行う/false:行わない]
      count - 最大幅を標準セル幅の何倍にするかを指定。マイナスの場合は、無制限
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setRecalcSheetName リンク・アイコン

      public void setRecalcSheetName(String[] sheets)
      EXCELで、出力処理の最後にセルの計算式の再計算をさせるシート名の配列を指定します。 null の場合は、再計算しません。 なお、再計算は、saveFile(String)の中で実行されます。(セーブしなければ実行されません。)
      パラメータ:
      sheets - 対象シート名の配列
      変更履歴:
      6.5.0.0 (2016/09/30) セルの計算式の再計算をさせる recalcSheetNames 属性の追加。
    • setDataStartRow リンク・アイコン

      public void setDataStartRow(int st)
      データ行の書き込み開始位置の行番号を設定します。 これは、autoSize設定で、自動調整するカラムを、ヘッダーではなく、 データ部で計算する場合に使用します。
      パラメータ:
      st - データ行の開始位置。未設定時は、-1
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setAddTitleSheet リンク・アイコン

      public void setAddTitleSheet(String shtName)
      Sheet一覧を先頭Sheetに作成する場合のSheet名を指定します。 これは、Workbook に含まれる Sheet 一覧を作成する場合に、利用可能です。 この処理は、#saveFile( File ) 処理時に、実行されます。
      パラメータ:
      shtName - Sheet一覧のSheet名
      関連項目:
      • makeAddTitleSheet()
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • getNumberOfSheets リンク・アイコン

      public int getNumberOfSheets()
      内部 Workbookの Sheet数を返します。
      戻り値:
      シート数
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setRefSheetName リンク・アイコン

      public void setRefSheetName(String refSheetName)
      内部 Workbookより、雛形Sheetをセットします。 これは、雛形シートを使用する場合に、使います。このメソッドが呼ばれると、 雛形シートを使用すると判定されます。 雛形シート名が、内部 Workbook に存在しない場合は、エラーになります。 ただし、null をセットした場合は、最初のシートを雛形シートとして使用すると 判定します。
      パラメータ:
      refSheetName - 参照シート名(nullの場合、参照シート使用する場合は、先頭のシート)
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • createSheet リンク・アイコン

      public void createSheet(String shtName, boolean isOverwrite)
      内部 Workbookより、新しいSheetを作ります。 先に雛形シートを指定している場合は、その雛形シートから作成します。 指定していない場合は、新しいシートを作成します。 雛形シートを参照する場合は、雛形シートそのものを返します。 また、雛形シートの枚数を超える場合は、前の雛形シートをコピーします。 雛形シートが存在しない場合は、新しいシートを作成します。 シート名は、重複チェックを行い、同じ名前のシートの場合は、(1),(2)が付けられます。 shtName が null の場合は、"Sheet" が割り振られます。 この処理を行うと、内部の Sheet にも、ここで作成された Sheet が設定されます。
      パラメータ:
      shtName - シート名 (重複する場合は、(2)、(3)のような文字列を追加、nullの場合は、"Sheet")
      isOverwrite - 雛形シート名をそのまま使用する場合は、true を指定します。
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.2.2.3 (2015/04/10) 雛形シートにそのままデータを書き込んでいく。, 6.5.0.0 (2016/09/30) 雛形シート名をそのまま使用する場合は、isOverwrite に、true を指定します。
    • setSheetName リンク・アイコン

      public void setSheetName(int shtNo, String shtName)
      内部 Workbook の指定のシート番号の Sheet の名前を設定します。 指定のシート名が、既存のシートになければ、そのまま設定します。 すでに、同じ名前のシートが存在する場合は、そのシート名の後に (1)、(2)、(3)のような文字列を追加します。 shtName が null の場合は、"Sheet" が割り振られます。
      パラメータ:
      shtNo - シート番号
      shtName - シート名 (重複する場合は、(1)、(2)のような文字列を追加、nullの場合は、"Sheet")
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.2.5.1 (2015/06/12) シート名重複が自分自身の場合は、(1)等の追加は行わない。
    • getSheetName リンク・アイコン

      public String getSheetName(int shtNo)
      内部 Workbook の 指定のSheet番号のシート名前を返します。 シートが存在しない場合は、null を返します。 この処理を行うと、内部の Sheet にも、ここで見つけた Sheet が設定されます。
      パラメータ:
      shtNo - シート番号
      戻り値:
      shtName シート名
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • getSheetNo リンク・アイコン

      public int getSheetNo(String shtName)
      内部 Workbook の 指定のSheet名のシート番号を返します。 シートが存在しない場合は、-1 を返します。 この処理を行うと、内部の Sheet にも、ここで見つけた Sheet が設定されます。 シートが存在しない場合、内部の Sheet オブジェクトも null がセットされますのでご注意ください。
      パラメータ:
      shtName - シート名
      戻り値:
      シート番号(名前のシートがなければ、-1)
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • removeSheet リンク・アイコン

      public void removeSheet(int fromNo, int toNo)
      Excelの指定Sheetオブジェクトを削除します。 削除するシートは、シート番号でFrom-To形式で指定します。 Fromも Toも、削除するシート番号を含みます。 例えば、0,3 と指定すると、0,1,2,3 の 4シート分を削除します。
      パラメータ:
      fromNo - 削除する開始シート番号(含む)
      toNo - 削除する終了シート番号(含む)
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • getFirstRowNum リンク・アイコン

      public int getFirstRowNum()
      内部 Workbookの 現在Sheet の最初の行番号を返します。 行は、0 から始まります。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。
      戻り値:
      最初の行番号
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • getLastRowNum リンク・アイコン

      public int getLastRowNum()
      内部 Workbookの 現在Sheet の最後の行番号を返します。 最終行は、含みます。よって、行数は、getLastRowNum()+1になります。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。
      戻り値:
      最後の行番号
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • createRow リンク・アイコン

      public void createRow(int rowNo)
      Excelの指定行のRowオブジェクトを作成します。 指定行の Row オブジェクトが存在しない場合は、新規作成します。 この処理を実行すると、指定行の Rowオブジェクトが内部 Row に設定されます。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。 この処理を行うと、内部の Rowオブジェクトが設定されます。
      パラメータ:
      rowNo - 行の番号
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • removeRow リンク・アイコン

      public void removeRow(int startRowNum)
      Excelの指定行以降の余計なRowオブジェクトを削除します。 指定行の Row オブジェクトから、getLastRowNum() までの行を、削除します。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。
      パラメータ:
      startRowNum - 指定以降の余計な行を削除
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • removeCell リンク・アイコン

      public void removeCell(int startCellNum)
      Excelの処理中のRowオブジェクトの指定カラム以降の余計なCellオブジェクトを削除します。 指定行の Row オブジェクトから、getLastCellNum() までのカラムを、削除します。 この処理は、内部Rowが作成されているか、null でない場合のみ実行できます。
      パラメータ:
      startCellNum - 指定以降の余計なカラムを削除
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setValues リンク・アイコン

      public void setValues(String[] vals, int rowNo)
      row にあるセルのオブジェクト値を設定します。 行が存在しない場合、行を追加します。 この処理を行うと、内部の Rowオブジェクトがなければ新規作成されます。
      パラメータ:
      vals - 新しい配列値。
      rowNo - 値が変更される行(無視されます)
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setValues リンク・アイコン

      public void setValues(String[] vals, int rowNo, boolean[] isNums)
      row にあるセルのオブジェクト値を設定します。 行が存在しない場合、行を追加します。 引数に、カラムがNUMBER型かどうかを指定することが出来ます。 この処理を行うと、内部の Rowオブジェクトがなければ新規作成されます。
      パラメータ:
      vals - 新しい配列値。
      rowNo - 値が変更される行(無視されます)
      isNums - セルが、NUMBER型の場合は、true/それ以外は、false
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setCellValue リンク・アイコン

      public void setCellValue(String dataVal, int colNo)
      Excelの指定セルにデータを設定します。 ここで設定する行は、現在の内部 Row です。 Row を切り替えたい場合は、#createRow( int ) を呼び出してください。 このメソッドでは、データを文字列型として設定します。 この処理は、内部Rowが作成されているか、null でない場合のみ実行できます。
      パラメータ:
      dataVal - String文字列
      colNo - セルの番号(0,1,2・・・・)
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setCellValue リンク・アイコン

      public void setCellValue(String dataVal, int colNo, boolean isNumber)
      Excelの指定セルにデータを設定します。 ここで設定する行は、現在の内部 Row です。 Row を切り替えたい場合は、#createRow( int ) を呼び出してください。 このメソッドでは、引数のデータ型をNUMBER型の場合は、doubleに変換して、 それ以外は文字列としてとして設定します。 この処理は、内部Rowが作成されているか、null でない場合のみ実行できます。
      パラメータ:
      dataVal - String文字列
      colNo - セルの番号(0,1,2・・・・)
      isNumber - セルが、NUMBER型の場合は、true/それ以外は、false
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setCellLink リンク・アイコン

      public void setCellLink(String linkVal, int colNo)
      Excelの指定セルにHyperlinkを設定します。 ここで設定する行は、現在の内部 Row です。 Row を切り替えたい場合は、#createRow( int ) を呼び出してください。 このメソッドで設定するHyperlinkは、Sheetに対する LINK_DOCUMENT です。 先に、セルに対する値をセットしておいてください。 Hyperlinkは、文字に対して、下線 と 青字 のスタイル設定を行います。 Link文字列(シート名) が、null や ゼロ文字列の場合は、処理を行いません。
      パラメータ:
      linkVal - Link文字列(シート名)
      colNo - セルの番号(0,1,2・・・・)
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.5.0.0 (2016/09/30) poi-3.15 対応(Hyperlink.LINK_XXXX → HyperlinkType.XXXX)
    • getValues リンク・アイコン

      public String[] getValues(int rowNo)
      現在のRow にあるセルの属性値を配列で返します。 Rowオブジェクトが存在しない場合は、長さ0の配列を返します。 また、Rowオブジェクトの中の セルオブジェクトが存在しない場合は、 null がセットされます。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。 この処理を実行すると、指定行の Rowオブジェクトが内部 Row に設定されます。
      パラメータ:
      rowNo - 行の番号
      戻り値:
      指定されたセルの属性値。Rowがnullの場合は、長さ0の配列を返します。
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.3.9.0 (2015/11/06) ExcelModel#getValues(int) では、nullは返さない。, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の1か所にすべきです(PMD)。
      このメソッドは、nullを返しません
    • getValue リンク・アイコン

      public String getValue(int rowNo, int colNo)
      現在のrow にあるセルの属性値を返します。 セルオブジェクトが存在しない場合は、null を返します。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。 この処理を実行すると、指定行の Rowオブジェクトが内部 Row に設定されます。
      パラメータ:
      rowNo - 値が参照される行
      colNo - 値が参照される列
      戻り値:
      指定されたセルの値 T
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の1か所にすべきです(PMD)。
    • addImageFile リンク・アイコン

      public void addImageFile(String imgFile, int shtNo, int rowNo, int colNo)
      指定のシートの行・列の箇所に、イメージファイルを挿入します。 ここでは、セル範囲ではなく、指定の行列の箇所に、アンカーを設定して、画像ファイルを 挿入します。一応、リサイズして、元の大きさ近くに戻しますが、縦横比が変わってしまいます。 正確に挿入する場合は、セル範囲の指定と、マージンを指定しなければなりませんが、 微調整が必要です。 この処理で使用される Sheetオブジェクトは一時的に作成されます。(キャッシュされません) 一連処理のどのタイミングで実行しても、内部の状態には影響はありません。
      パラメータ:
      imgFile - 挿入するイメージファイル名
      shtNo - シート番号
      rowNo - 挿入する行
      colNo - 挿入する列
      変更履歴:
      6.0.2.3 (2014/10/10) 新規作成
    • addImageFile リンク・アイコン

      public void addImageFile(String imgFile, int shtNo, int row1, int col1, int row2, int col2, int dx1, int dy1, int dx2, int dy2)
      指定のシートの行・列の箇所に、イメージファイルを挿入します。 ここでは、セル範囲ではなく、指定の行列の箇所に、アンカーを設定して、画像ファイルを 挿入します。一応、リサイズして、元の大きさ近くに戻しますが、縦横比が変わってしまいます。 正確に挿入する場合は、セル範囲の指定と、マージンを指定しなければなりませんが、 微調整が必要です。 この処理で使用される Sheetオブジェクトは一時的に作成されます。(キャッシュされません) 一連処理のどのタイミングで実行しても、内部の状態には影響はありません。
      パラメータ:
      imgFile - 挿入するイメージファイル名
      shtNo - シート番号
      row1 - 挿入する行(開始)
      col1 - 挿入する列(開始)
      row2 - 挿入する行(終了-含まず)
      col2 - 挿入する列(終了-含まず)
      dx1 - 開始セルのX軸座標のオフセット(ピクセル)
      dy1 - 開始セルのY軸座標のオフセット(ピクセル)
      dx2 - 終了セルのX軸座標のオフセット(ピクセル)
      dy2 - 終了セルのY軸座標のオフセット(ピクセル)
      変更履歴:
      6.0.2.3 (2014/10/10) 新規作成, 6.4.6.0 (2016/05/27) poi-3.15 準備, 6.8.2.4 (2017/11/20) poi-3.17 で、警告: [rawtypes] raw型が見つかりました対応, 7.2.9.0 (2020/10/12) ClientAnchorのオフセット指定は、Units.EMU_PER_PIXEL が単位
    • saveFile リンク・アイコン

      public void saveFile(File file)
      内部 Workbook オブジェクトをファイルに書き出します。 Excelの形式は、ここで指定する出力ファイルの拡張子ではなく、コンストラクタで 指定したファイルの拡張子で決まります。 異なる形式の拡張子を持つファイルを指定した場合、強制的に、オープンした Workbook の形式の拡張子を追加します。 拡張子は、Excel 2007以降の形式(.xlsx)か、Excel 2003以前の形式(.xls) が指定できます。 拡張子が未設定の場合は、オープンした Workbook の形式に合わせた拡張子を付与します。 isAutoCellSize=true の場合は、ここで全Sheetに対してCell幅の自動調整が行われます。
      パラメータ:
      file - セーブするファイル
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.1.0.0 (2014/12/26) 入力ファイルの拡張子判定の対応, 6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更, 6.5.0.0 (2016/09/30) セルの計算式の再計算をさせる recalcSheetNames 属性の追加。, 8.5.4.2 (2024/01/12) PMD 7.0.0 CloseResource 対応
    • activeWorkbook リンク・アイコン

      public void activeWorkbook(boolean isCellDel)
      Workbook の全Sheetを対象に、空行を取り除き、全体をシュリンクします。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 ここでは、Row を逆順にスキャンし、Cellが 存在しない間は、行を削除します。 途中の空行の削除ではなく、最終行からの連続した空行の削除です。 isCellDel=true を指定すると、Cellの末尾削除を行います。 有効行の最後のCellから空セルを削除していきます。 表形式などの場合は、Cellのあるなしで、レイアウトが崩れる場合がありますので 処理が不要な場合は、isCellDel=false を指定してください。
      パラメータ:
      isCellDel - Cellの末尾削除を行うかどうか(true:行う/false:行わない)
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • activeWorkbook リンク・アイコン

      public void activeWorkbook(List<Integer> rowCntList)
      指定の Workbook の全Sheetを対象に、実際の有効行と有効カラムを元に全体をシュリンクします。 ※ 現在、唯一LibreOfficeでのみ、xslx 変換できますが、有効行とカラムが シュリンクされず、無駄な行とカラムが存在します。 これは、xsl で出力されたファイルから有効な値を取得して、xslxに適用させるための 機能で、本来きちんとした有効範囲の xslx が生成されれば、不要な処理です。 引数のListオブジェクトに従って、無条件に処理を行います。
      パラメータ:
      rowCntList - シートごとの有効行の配列リスト // * @see #getLastRowCellNum()
      関連項目:
      変更履歴:
      8.0.1.0 (2021/10/29) 全Sheetを対象に、実際の有効行と有効カラムを取得, 8.0.3.0 (2021/12/17) シート毎の行数Listに変更。 // * @param rcList シートごとの有効行の配列リスト
    • textConverter リンク・アイコン

      public void textConverter(Map<String,String> convMap)
      Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 #activeWorkbook( boolean ) との順番は構いません。 ・シート名の一覧をピックアップします。 ・セル値を、セル単位にピックアップします。 ・オブジェクト文字列を、改行単位にピックアップし、結果を合成します。 ここでは、内部的に、TextConverterインターフェースを作成して処理します。
      パラメータ:
      convMap - 変換対象を管理するMapオブジェクト
      関連項目:
      変更履歴:
      6.2.4.2 (2015/05/29) テキスト変換処理, 6.3.1.0 (2015/06/28) TextConverterに、引数(cmnt)を追加, 6.3.9.0 (2015/11/06) Java 8 ラムダ式に変更
    • textConverter リンク・アイコン

      Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 #activeWorkbook( boolean ) との順番は構いません。 ・シート名の一覧をピックアップします。 ・セル値を、セル単位内の改行単位にピックアップし、結果を合成ます。 ・オブジェクト文字列を、改行単位にピックアップし、結果を合成します。 ここでは、シート名、セルテキスト、SimpleShapeオブジェクトのテキストを input に、TextConverterインターフェース の change メソッドを呼び出します。 戻り値が、null でないなら、元のデータと置き換えます。 戻り値が、null の場合は、そのまま読み飛ばします。(なにもしません) EXCELへの書き戻しが発生しますので、万一、ファイル破損で、開けなくなる場合を 想定して、バックアップファイルは、各自で準備してください。
      パラメータ:
      conv - TextConverterインターフェース
      関連項目:
      変更履歴:
      6.2.4.2 (2015/05/29) テキスト変換処理, 6.2.5.0 (2015/06/05) xsl形式のオブジェクト取得…はできなかった。, 6.3.1.0 (2015/06/28) TextConverterに、引数(cmnt)を追加, 6.3.9.0 (2015/11/06) セルに値をセットするときに、セルタイプを考慮する。, 8.0.3.1 (2021/12/28) テキスト取得処理にgetShapeTextを使用する。, 8.1.2.3 (2022/05/20) オブジェクト文字列の変換で、drawing の null 対応, 8.4.0.0 (2023/01/30) オブジェクト文字列の変換ミス対応とメソッド化, 8.5.4.0 (2023/12/01) コメント(cmnt)のシート名をオリジナルシート名に取り出す
    • xssfShapeScan リンク・アイコン

      public void xssfShapeScan(BiConsumer<org.apache.poi.xssf.usermodel.XSSFSimpleShape,String> bicon)
      Workbook の全SheetのShapeを対象に、テキストをスキャンします(XSLX限定)。 引数のBiConsumerは、ラムダ式として適用できます。 シート毎のShapeから、#getShapeText(XSSFShape,BiConsumer) を呼び出して、 テキストが存在した場合に、その時のXSSFSimpleShapeとテキストを引数のラムダ式に渡します。
      パラメータ:
      bicon - BiConsumer関数型インターフェース
      変更履歴:
      8.1.0.1 (2022/01/07) テキストベースのリンク作成
    • sheetSelected リンク・アイコン

      public void sheetSelected(boolean isSelect)
      現在のシートを選択済み(true)か、非選択済み(false)に設定します。 通常は、シートは、先頭シート以外は、非選択状態になっています。 シートを選択済みにすることで、印刷範囲を指定する事ができます。
      パラメータ:
      isSelect - true:シート選択/false:非選択
      変更履歴:
      6.3.9.0 (2015/11/06) 新規追加
    • sheetCopy リンク・アイコン

      public void sheetCopy(TextConverter<String,String> conv, String shtName)
      Workbook の雛形シートのTextConverter した、新しいSheetを作成します。 正確には、 1.雛形シートを、コピーして、新しいSheet(shtName)を、作成します。 2.雛形シートが指定されていない場合は、一番最後のシートをコピーします。 3.そのシートに対して、TextConverter を行い、文字列変換します。
      パラメータ:
      conv - TextConverterインターフェース
      shtName - シート名
      関連項目:
      変更履歴:
      6.3.9.0 (2015/11/06) 新規追加, 6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX), 8.0.3.1 (2021/12/28) テキスト取得処理にgetShapeTextを使用する。
    • getSheetNames リンク・アイコン

      public String[] getSheetNames()
      シート一覧を、内部の Workbook から取得します。 取得元が、Workbook なので、xls , xlsx どちらの形式でも取り出せます。 EXCEL上のシート名を、配列で返します。
      戻り値:
      シート名の配列
      関連項目:
      変更履歴:
      6.2.6.0 (2015/06/19) 新規作成
    • getNames リンク・アイコン

      public String[] getNames()
      名前定義一覧を内部の Workbook から取得します。 EXCEL上に定義された名前を、配列で返します。 ここでは、名前とFormulaをタブで連結した文字列を配列で返します。 Name オブジェクトを削除すると、EXCELが開かなくなったりするので、 取りあえず一覧を作成して、手動で削除してください。 なお、名前定義には、非表示というのがありますので、ご注意ください。
      戻り値:
      名前定義(名前+TAB+Formula)の配列
      関連項目:
      変更履歴:
      6.2.6.0 (2015/06/19) 新規作成
      このメソッドは、nullを返しません
    • getStyleNames リンク・アイコン

      public String[] getStyleNames()
      書式のスタイル一覧を内部の Workbook から取得します。 EXCEL上に定義された書式のスタイルを、配列で返します。 書式のスタイルの名称は、CellStyle にメソッドが定義されていません。 実クラスである HSSFCellStyle にキャストして使用する 必要があります。(XSSFCellStyle にも名称を取得するメソッドがありません。) ※ EXCEL2010 ホームタブ→セルのスタイル は、一つづつしか削除できません。 マクロは、開発タブ→Visual Basic で、挿入→標準モジュール を開き テキストを張り付けてください。 実行は、開発タブ→マクロ で、マクロ名を選択して、実行します。 最後は、削除してください。
      戻り値:
      書式のスタイル一覧
      関連項目:
      変更履歴:
      6.2.6.0 (2015/06/19) 新規作成
      このメソッドは、nullを返しません
    • main リンク・アイコン

      public static void main(String[] args)
      アプリケーションのサンプルです。 Usage: java org.opengion.fukurou.model.ExcelModel 入力ファイル名 [出力ファイル名] ・・・ 通常は標準出力に行単位に、セルをタブ区切り出力します。 出力ファイル名 を指定すると、EXCEL ファイルとしてセーブし直します。 その場合は、以下のパラメータも使用できます。 -CS CellStyleを 設定します。 -AS useAutoCellSizeを 設定します。 -FN=*** FontNameを 設定します。 -FP=** FontPointを 設定します。 -IMG 画像ファイルを挿入します。(-IMG 画像ファイル名 シート番号 行 列)をスペース区切りで続けます。
      パラメータ:
      args - コマンド引数配列
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成