クラス ExcelModel


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

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

      すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      void activeWorkbook​(boolean isCellDel)
      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 getFirstRowNum()
      内部 Workbookの 現在Sheet の最初の行番号を返します。
      int getLastRowNum()
      内部 Workbookの 現在Sheet の最後の行番号を返します。
      String[] getNames()
      名前定義一覧を内部の Workbook から取得します。
      int getNumberOfSheets()
      内部 Workbookの Sheet数を返します。
      String getSheetName​(int shtNo)
      内部 Workbook の 指定のSheet番号のシート名前を返します。
      String[] getSheetNames()
      シート一覧を、内部の Workbook から取得します。
      int getSheetNo​(String shtName)
      内部 Workbook の 指定のSheet名のシート番号を返します。
      String[] getStyleNames()
      書式のスタイル一覧を内部の Workbook から取得します。
      String getValue​(int rowNo, int colNo)
      現在のrow にあるセルの属性値を返します。
      String[] 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 setAddTitleSheet​(String shtName)
      Sheet一覧を先頭Sheetに作成する場合のSheet名を指定します。
      void setCellLink​(String linkVal, int colNo)
      Excelの指定セルにHyperlinkを設定します。
      void setCellStyle()
      データ設定する セルに、罫線を追加します。
      void setCellValue​(String dataVal, int colNo)
      Excelの指定セルにデータを設定します。
      void setCellValue​(String dataVal, int colNo, boolean isNumber)
      Excelの指定セルにデータを設定します。
      void setDataStartRow​(int st)
      データ行の書き込み開始位置の行番号を設定します。
      void setFont​(String fontName, short fontPoint)
      内部 Workbook に、フォント名、フォントサイズを設定します。
      void setRecalcSheetName​(String[] sheets)
      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 sheetCopy​(TextConverter<String,​String> conv, String shtName)
      Workbook の雛形シートのTextConverter した、新しいSheetを作成します。
      void sheetSelected​(boolean isSelect)
      現在のシートを選択済み(true)か、非選択済み(false)に設定します。
      void textConverter​(Map<String,​String> convMap)
      Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。
      void textConverter​(TextConverter<String,​String> conv)
      Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。
      void useAutoCellSize​(boolean flag)
      全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。
      void useAutoCellSize​(boolean flag, int count)
      全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。
    • コンストラクタの詳細

      • ExcelModel

        public ExcelModel​(File file)
        EXCELファイルのWookbookのデータ処理モデルを作成します。 ここでは、既存のファイルを読み込んで、データ処理モデルを作成しますので、 ファイルがオープンできなければエラーになります。
        パラメータ:
        file - EXCELファイル
        関連項目:
        ExcelModel( File , boolean )
        変更履歴:
        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:新規作成
        関連項目:
        ExcelModel( File )
        変更履歴:
        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:行わない]
        関連項目:
        useAutoCellSize( boolean,int )
        変更履歴:
        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 - 最大幅を標準セル幅の何倍にするかを指定。マイナスの場合は、無制限
        関連項目:
        useAutoCellSize( boolean )
        変更履歴:
        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
        関連項目:
        useAutoCellSize( boolean )
        変更履歴:
        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・・・・)
        関連項目:
        setCellValue( String,int,boolean )
        変更履歴:
        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
        関連項目:
        createRow( int ), setCellValue( String,int )
        変更履歴:
        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・・・・)
        関連項目:
        setCellValue( String,int )
        変更履歴:
        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 属性の追加。
      • 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) 新規作成
      • textConverter

        public void textConverter​(Map<String,​String> convMap)
        Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 #activeWorkbook( boolean ) との順番は構いません。 ・シート名の一覧をピックアップします。 ・セル値を、セル単位にピックアップします。 ・オブジェクト文字列を、改行単位にピックアップし、結果を合成します。 ここでは、内部的に、TextConverterインターフェースを作成して処理します。
        パラメータ:
        convMap - 変換対象を管理するMapオブジェクト
        関連項目:
        textConverter( TextConverter )
        変更履歴:
        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

        public void textConverter​(TextConverter<String,​String> conv)
        Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 #activeWorkbook( boolean ) との順番は構いません。 ・シート名の一覧をピックアップします。 ・セル値を、セル単位内の改行単位にピックアップし、結果を合成ます。 ・オブジェクト文字列を、改行単位にピックアップし、結果を合成します。 ここでは、シート名、セルテキスト、SimpleShapeオブジェクトのテキストを input に、TextConverterインターフェース の change メソッドを呼び出します。 戻り値が、null でないなら、元のデータと置き換えます。 戻り値が、null の場合は、そのまま読み飛ばします。(なにもしません) EXCELへの書き戻しが発生しますので、万一、ファイル破損で、開けなくなる場合を 想定して、バックアップファイルは、各自で準備してください。
        パラメータ:
        conv - TextConverterインターフェース
        関連項目:
        textConverter( Map )
        変更履歴:
        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) セルに値をセットするときに、セルタイプを考慮する。
      • 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.雛形シートが指定されていない場合は、一番最後のシートをコピーします。 2.そのシートに対して、TextConverter を行い、文字列変換します。
        パラメータ:
        conv - TextConverterインターフェース
        shtName - シート名
        関連項目:
        textConverter( Map )
        変更履歴:
        6.3.9.0 (2015/11/06) 新規追加, 6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX)
      • getSheetNames

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

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

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