クラス POIUtil

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

public final class POIUtil extends Object
POI による、Excel/Word/PoworPoint等に対する、ユーティリティクラスです。 基本的には、ネイティブファイルを読み取り、テキストを取得する機能が主です。 Excel、Word、PowerPoint、Visio、Publisher からのテキスト取得が可能です。
変更履歴:
6.0.2.0 (2014/09/19) 新規作成, 6.2.0.0 (2015/02/27) パッケージ変更(util → model)
機能分類
その他
導入されたバージョン:
JDK7.0,
  • フィールドの概要

    フィールド
    修飾子とタイプ
    フィールド
    説明
    static final String
    対象サフィックス "ppt,pptx,doc,docx,xls,xlsx,xlsm"
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    static void
    activeWorkbook(org.apache.poi.ss.usermodel.Workbook wkbook, boolean isCellDel)
    指定の Workbook の全Sheetを対象に、空行を取り除き、全体をシュリンクします。 この処理は、#saveFile( String ) の直前に行うのがよいでしょう。 ここでは、Row を逆順にスキャンし、Cellが 存在しない間は、行を削除します。 途中の空行の削除ではなく、最終行からの連続した空行の削除です。 isCellDel=true を指定すると、Cellの末尾削除を行います。 有効行の最後のCellから空セルを削除していきます。 表形式などの場合は、Cellのあるなしで、レイアウトが崩れる場合がありますので 処理が不要な場合は、isCellDel=false を指定してください。
    static void
    activeWorkbook(org.apache.poi.ss.usermodel.Workbook wkbook, List<Integer> rowCntList)
    指定の Workbook の全Sheetを対象に、実際の有効行と有効カラムを元に全体をシュリンクします。 ※ 現在、唯一LibreOfficeでのみ、xslx 変換できますが、有効行とカラムが シュリンクされず、無駄な行とカラムが存在します。 これは、xsl で出力されたファイルから有効な値を取得して、xslxに適用させるための 機能で、本来きちんとした有効範囲の xslx が生成されれば、不要な処理です。 引数のListオブジェクトに従って、無条件に処理を行います。
    static void
    autoCellSize(org.apache.poi.ss.usermodel.Workbook wkbook, int maxColCount, int dataStRow)
    全てのSheetに対して、autoSizeColumn設定を行います。 重たい処理なので、ファイルの書き出し直前に一度だけ実行するのがよいでしょう。 autoSize設定で、カラム幅が大きすぎる場合、現状では、 初期カラム幅のmaxColCount倍を限度に設定します。 ただし、maxColCount がマイナスの場合は、無制限になります。
    static org.apache.poi.ss.usermodel.Workbook
    ファイルから、Workbookオブジェクトを新規に作成します。
    static void
    引数ファイル(Excel)を、テキスト化します。 TableModelHelper を与えることで、EXCELデータをテキスト化できます。 ここでは、HSSF(.xls)形式を処理します。 シート名、セル、テキストオブジェクトをテキスト化します。
    static void
    引数ファイル(Excel)を、テキスト化します。 TableModelHelper を与えることで、EXCELデータをテキスト化できます。 ここでは、ExcelModelを使用して、(.xlsx , .xlsm)形式を処理します。 シート名、セル、テキストオブジェクトをテキスト化します。
    static String
    引数ファイルを、POITextExtractor を使用してテキスト化します。 Excel、Word、PowerPoint、Visio、Publisher からのテキスト取得が可能です。 拡張子から、ファイルの種類を自動判別します。
    static String
    extractor(File file, String encode)
    引数ファイル(Text)を、テキスト化します。 ここでは、ファイルとエンコードを指定して、ファイルのテキスト全てを読み取ります。
    static String
    getCelKigo(int rowNo, int colNo)
    Excelの行番号,列番号より、セル記号を求めます。 行番号は、0から始まる数字ですが、記号化する場合は、1から始まります。 Excelの列記号とは、A,B,C,…,Z,AA,AB,…,ZZ,AAA,AAB,… と続きます。 つまり、アルファベットだけの、26進数になります。(ゼロの扱いが少し特殊です) 列番号は、0から始まる数字で、0=A,1=B,2=C,…,25=Z,26=AA,27=AB,…,701=ZZ,702=AAA,703=AAB,… EXCELの行列記号にする場合は、この列記号に、行番号を、+1して付ければよいだけです。 (※ 列番号に+1するのは、内部では0から始まる列番号ですが、表示上は1から始まります)
    static String
    getCellMsg(org.apache.poi.ss.usermodel.Cell oCell)
    セル情報を返します。 エラー発生時に、どのセルでエラーが発生したかの情報を取得できるようにします。
    static String[]
    getNames(org.apache.poi.ss.usermodel.Workbook wkbook)
    名前定義一覧を取得します。 EXCEL上に定義された名前を、配列で返します。 ここでは、名前とFormulaをタブで連結した文字列を配列で返します。 Name オブジェクトを削除すると、EXCELが開かなくなったりするので、 取りあえず一覧を作成して、手動で削除してください。 なお、名前定義には、非表示というのがありますので、ご注意ください。 ◆ 非表示になっている名前の定義を表示にする EXCEL VBA マクロ http://dev.classmethod.jp/tool/excel-delete-name/ Sub VisibleNames() Dim name For Each name In ActiveWorkbook.Names If name.Visible = False Then name.Visible = True End If Next MsgBox "すべての名前の定義を表示しました。", vbOKOnly End Sub ※ EXCEL2010 数式タブ→名前の管理 で、複数選択で、削除できます。 ただし、非表示の名前定義は、先に表示しないと、削除できません。 ◆ 名前の一括削除 EXCEL VBA マクロ http://komitsudo.blog70.fc2.com/blog-entry-104.html Sub DeleteNames() Dim name On Error Resume Next For Each name In ActiveWorkbook.Names If Not name.BuiltIn Then name.Delete End If Next MsgBox "すべての名前の定義を削除しました。", vbOKOnly End Sub
    static String
    getNumericTypeString(org.apache.poi.ss.usermodel.Cell oCell)
    セル値が数字の場合に、数字か日付かを判断して、対応する文字列を返します。
    static String[]
    getSheetNames(org.apache.poi.ss.usermodel.Workbook wkbook)
    シート一覧を、Workbook から取得します。 取得元が、Workbook なので、xls , xlsx どちらの形式でも取り出せます。 EXCEL上のシート名を、配列で返します。
    static String[]
    getStyleNames(org.apache.poi.ss.usermodel.Workbook wkbook)
    書式のスタイル一覧を取得します。 EXCEL上に定義された書式のスタイルを、配列で返します。 書式のスタイルの名称は、CellStyle にメソッドが定義されていません。 実クラスである HSSFCellStyle にキャストして使用する 必要があります。(XSSFCellStyle にも名称を取得するメソッドがありません。) ※ EXCEL2010 ホームタブ→セルのスタイル は、一つづつしか削除できません。 マクロは、開発タブ→Visual Basic で、挿入→標準モジュール を開き テキストを張り付けてください。 実行は、開発タブ→マクロ で、マクロ名を選択して、実行します。 最後は、削除してください。 ◆ スタイルの一括削除 EXCEL VBA マクロ http://komitsudo.blog70.fc2.com/blog-entry-104.html Sub DeleteStyle() Dim styl On Error Resume Next For Each styl In ActiveWorkbook.Styles If Not styl.BuiltIn Then styl.Delete End If Next MsgBox "すべての追加スタイルを削除しました。", vbOKOnly End Sub ◆ 名前の表示、削除、スタイルの削除の一括実行 EXCEL VBA マクロ Sub AllDelete() Call VisibleNames Call DeleteNames Call DeleteStyle MsgBox "すべての処理を完了しました。", vbOKOnly End Sub
    static String
    getValue(org.apache.poi.ss.usermodel.Cell oCell)
    セルオブジェクト(Cell)から値を取り出します。 セルオブジェクトが存在しない場合は、null を返します。 それ以外で、うまく値を取得できなかった場合は、ゼロ文字列を返します。
    static boolean
    isPOI(File file)
    引数ファイルが、POI関連の拡張子ファイルかどうかを判定します。 Excel、Word、PowerPoint、Visio、Publisher からのテキスト取得が可能です。 拡張子が、ppt,pptx,doc,docx,xls,xlsx,xlsm のファイルの場合、true を返します。
    static int[]
    Excelの行列記号を、行番号と列番号に分解します。 Excelの行列記号とは、A1 , B5 , AA23 などの形式を指します。 これを、行番号と列番号に分解します。例えば、A1→0行0列、B5→4行1列、AA23→22行26列 となります。 分解した結果は、内部変数の、rowNo と colNo にセットされます。 これらは、0 から始まる int型の数字で表します。 ①行-列形式 行列は、EXCELオブジェクトに準拠するため、0から始まる整数です。 0-0 ⇒ A1 , 1-0 ⇒ A2 , 0-1 ⇒ B1 になります。 ②EXCEL表記 EXCEL表記に準拠した、A1,A2,B1 の記述も処理できるように対応します。 なお、A1,A2,B1 の記述は、必ず、英字1文字+数字 にしてください。(A~Zまで) ③EXCELシート名をキーに割り当てるために、"SHEET" という記号に対応します。 rowNo = -1 をセットします。
    static void
    main(String[] args)
    アプリケーションのサンプルです。 入力ファイル名 は必須で、第一引数固定です。 第二引数は、処理方法で、-ALL か、-LINE を指定します。何も指定しなければ、-ALL です。 第三引数を指定した場合は、Encode を指定します。 Usage: java org.opengion.fukurou.model.POIUtil 入力ファイル名 [処理方式] [エンコード] -A(LL) ・・・ ALL 一括処理(初期値) -L(INE) ・・・ LINE 行単位処理 -S(heet) ・・・ Sheet名一覧 -N(AME) ・・・ NAME:名前定義 -C(ellStyle) ・・・ CellStyle:書式のスタイル
    static void
    setValue(org.apache.poi.ss.usermodel.Cell oCell, String val)
    セルオブジェクト(Cell)に、値をセットします。 セルオブジェクトが存在しない場合は、何もしません。 引数は、文字列で渡しますが、セルの形式に合わせて、変換します。 変換がうまくいかなかった場合は、エラーになりますので、ご注意ください。
    static void
    引数ファイル(Word,PoworPoint,Excel)を、TableModelHelper を使用してテキスト化します。 ここでは、ファイル名の拡張子で、処理するメソッドを選別します。 拡張子が、対象かどうかは、#isPOI( File ) メソッドで判定できます。 TableModelHelper によるイベント処理できますが、TEXTというカラム名を持つ 表形式オブジェクトの形で処理されます。 また、内部的に、先頭に、# がある場合や、行データが存在しない場合は、 スキップされます。
    static void
    引数ファイル(Text)を、テキスト化します。 ここでは、ファイルとエンコードを指定して、ファイルのテキスト全てを読み取ります。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • フィールド詳細

  • メソッドの詳細

    • isPOI

      public static boolean isPOI(File file)
      引数ファイルが、POI関連の拡張子ファイルかどうかを判定します。 Excel、Word、PowerPoint、Visio、Publisher からのテキスト取得が可能です。 拡張子が、ppt,pptx,doc,docx,xls,xlsx,xlsm のファイルの場合、true を返します。
      パラメータ:
      file - 判定するファイル
      戻り値:
      POI関連の拡張子の場合、true
      変更履歴:
      6.2.3.0 (2015/05/01) POI関連の拡張子ファイルかどうかを判定
    • extractor

      public static String extractor(File file)
      引数ファイルを、POITextExtractor を使用してテキスト化します。 Excel、Word、PowerPoint、Visio、Publisher からのテキスト取得が可能です。 拡張子から、ファイルの種類を自動判別します。
      パラメータ:
      file - 入力ファイル名
      戻り値:
      変換後のテキスト
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.2.0.0 (2015/02/27) getText → extractor に変更, 8.0.0.0 (2021/07/31) ExtractorFactory → POIXMLExtractorFactory に変更
      このメソッドは、nullを返しません
    • extractor

      public static String extractor(File file, String encode)
      引数ファイル(Text)を、テキスト化します。 ここでは、ファイルとエンコードを指定して、ファイルのテキスト全てを読み取ります。
      パラメータ:
      file - 入力ファイル
      encode - エンコード名
      戻り値:
      ファイルのテキスト
      変更履歴:
      6.2.2.0 (2015/03/27) 引数ファイル(Text)を、テキスト化。, 6.2.3.0 (2015/05/01) textReader → extractor に変更
    • textReader

      public static void textReader(File file, TextConverter<String,String> conv, String encode)
      引数ファイル(Text)を、テキスト化します。 ここでは、ファイルとエンコードを指定して、ファイルのテキスト全てを読み取ります。
      パラメータ:
      file - 入力ファイル
      conv - イベント処理させるI/F
      encode - エンコード名
      変更履歴:
      6.2.2.0 (2015/03/27) 引数ファイル(Text)を、テキスト化。
    • textReader

      public static void textReader(File file, TextConverter<String,String> conv)
      引数ファイル(Word,PoworPoint,Excel)を、TableModelHelper を使用してテキスト化します。 ここでは、ファイル名の拡張子で、処理するメソッドを選別します。 拡張子が、対象かどうかは、#isPOI( File ) メソッドで判定できます。 TableModelHelper によるイベント処理できますが、TEXTというカラム名を持つ 表形式オブジェクトの形で処理されます。 また、内部的に、先頭に、# がある場合や、行データが存在しない場合は、 スキップされます。
      パラメータ:
      file - 入力ファイル
      conv - イベント処理させるI/F
      変更履歴:
      6.2.3.0 (2015/05/01) 新規作成, 6.2.5.0 (2015/06/05) xls,xlsxは、それぞれ excelReader1,excelReader2 で処理します。
    • excelReader1

      public static void excelReader1(File file, TextConverter<String,String> conv)
      引数ファイル(Excel)を、テキスト化します。 TableModelHelper を与えることで、EXCELデータをテキスト化できます。 ここでは、HSSF(.xls)形式を処理します。 シート名、セル、テキストオブジェクトをテキスト化します。
      パラメータ:
      file - 入力ファイル
      conv - イベント処理させるI/F
      関連項目:
      変更履歴:
      6.2.5.0 (2015/06/05) 新規作成
    • excelReader2

      public static void excelReader2(File file, TextConverter<String,String> conv)
      引数ファイル(Excel)を、テキスト化します。 TableModelHelper を与えることで、EXCELデータをテキスト化できます。 ここでは、ExcelModelを使用して、(.xlsx , .xlsm)形式を処理します。 シート名、セル、テキストオブジェクトをテキスト化します。
      パラメータ:
      file - 入力ファイル
      conv - イベント処理させるI/F
      関連項目:
      変更履歴:
      6.2.5.0 (2015/06/05) 新規作成, 6.3.1.0 (2015/06/28) TextConverterに、引数(cmnt)を追加, 6.3.9.0 (2015/11/06) Java 8 ラムダ式に変更
    • kigo2rowCol

      public static int[] kigo2rowCol(String kigo)
      Excelの行列記号を、行番号と列番号に分解します。 Excelの行列記号とは、A1 , B5 , AA23 などの形式を指します。 これを、行番号と列番号に分解します。例えば、A1→0行0列、B5→4行1列、AA23→22行26列 となります。 分解した結果は、内部変数の、rowNo と colNo にセットされます。 これらは、0 から始まる int型の数字で表します。 ①行-列形式 行列は、EXCELオブジェクトに準拠するため、0から始まる整数です。 0-0 ⇒ A1 , 1-0 ⇒ A2 , 0-1 ⇒ B1 になります。 ②EXCEL表記 EXCEL表記に準拠した、A1,A2,B1 の記述も処理できるように対応します。 なお、A1,A2,B1 の記述は、必ず、英字1文字+数字 にしてください。(A~Zまで) ③EXCELシート名をキーに割り当てるために、"SHEET" という記号に対応します。 rowNo = -1 をセットします。
      パラメータ:
      kigo - Excelの行列記号( A1 , B5 , AA23 など )
      戻り値:
      行と列の番号を持った配列([0]=行=ROW , [1]=列=COL)
      変更履歴:
      6.0.3.0 (2014/11/13) 新規作成, 6.2.6.0 (2015/06/19) 行-列形式と、SHEET文字列判定を採用。
      このメソッドは、nullを返しません
    • getValue

      public static String getValue(org.apache.poi.ss.usermodel.Cell oCell)
      セルオブジェクト(Cell)から値を取り出します。 セルオブジェクトが存在しない場合は、null を返します。 それ以外で、うまく値を取得できなかった場合は、ゼロ文字列を返します。
      パラメータ:
      oCell - EXCELのセルオブジェクト
      戻り値:
      セルの値
      変更履歴:
      3.8.5.3 (2006/08/07) 取り出し方法を少し修正, 5.5.1.2 (2012/04/06) フォーマットセルを実行して、その結果を再帰的に処理する。, 6.0.3.0 (2014/11/13) セルフォーマットエラー時に、RuntimeException を throw しない。, 6.4.2.0 (2016/01/29) StringUtil#ogStackTrace(Throwable) を、ThrowUtil#ogStackTrace(String,Throwable) に置き換え。, 6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX), 7.0.0.0 (2018/10/01) 警告:[deprecation] CellのgetCellTypeEnum()は推奨されません (POI4.0.0), 7.3.0.0 (2021/01/06) フォーマットエラー時に、エラーメッセージ取得でもエラーになる。, 8.0.0.0 (2021/07/31) FORMULA処理のエラー対応(出来るだけ…)
    • setValue

      public static void setValue(org.apache.poi.ss.usermodel.Cell oCell, String val)
      セルオブジェクト(Cell)に、値をセットします。 セルオブジェクトが存在しない場合は、何もしません。 引数は、文字列で渡しますが、セルの形式に合わせて、変換します。 変換がうまくいかなかった場合は、エラーになりますので、ご注意ください。
      パラメータ:
      oCell - EXCELのセルオブジェクト
      val - セットする値
      変更履歴:
      6.3.9.0 (2015/11/06) 新規追加, 6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX), 7.0.0.0 (2018/10/01) 警告:[deprecation] CellのgetCellTypeEnum()は推奨されません (POI4.0.0), 7.3.0.0 (2021/01/06) setCellType( CellType.BLANK )(Deprecated) → setBlank() (poi-4.1.2)
    • getNumericTypeString

      public static String getNumericTypeString(org.apache.poi.ss.usermodel.Cell oCell)
      セル値が数字の場合に、数字か日付かを判断して、対応する文字列を返します。
      パラメータ:
      oCell - EXCELのセルオブジェクト
      戻り値:
      数字の場合は、文字列に変換した結果を、日付の場合は、"yyyyMMddHHmmss" 形式で返します。
      変更履歴:
      3.8.5.3 (2006/08/07) 新規追加, 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正します。, 6.3.1.0 (2015/06/28) ExcelStyleFormat を使用します。
    • autoCellSize

      public static void autoCellSize(org.apache.poi.ss.usermodel.Workbook wkbook, int maxColCount, int dataStRow)
      全てのSheetに対して、autoSizeColumn設定を行います。 重たい処理なので、ファイルの書き出し直前に一度だけ実行するのがよいでしょう。 autoSize設定で、カラム幅が大きすぎる場合、現状では、 初期カラム幅のmaxColCount倍を限度に設定します。 ただし、maxColCount がマイナスの場合は、無制限になります。
      パラメータ:
      wkbook - 処理対象のWorkbook
      maxColCount - 最大幅を標準セル幅の何倍にするかを指定。マイナスの場合は、無制限
      dataStRow - データ行の開始位置。未設定時は、-1
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.8.2.4 (2017/11/20) rowObj のnull対策(poi-3.17)
    • activeWorkbook

      public static void activeWorkbook(org.apache.poi.ss.usermodel.Workbook wkbook, boolean isCellDel)
      指定の Workbook の全Sheetを対象に、空行を取り除き、全体をシュリンクします。 この処理は、#saveFile( String ) の直前に行うのがよいでしょう。 ここでは、Row を逆順にスキャンし、Cellが 存在しない間は、行を削除します。 途中の空行の削除ではなく、最終行からの連続した空行の削除です。 isCellDel=true を指定すると、Cellの末尾削除を行います。 有効行の最後のCellから空セルを削除していきます。 表形式などの場合は、Cellのあるなしで、レイアウトが崩れる場合がありますので 処理が不要な場合は、isCellDel=false を指定してください。
      パラメータ:
      wkbook - 処理対象のWorkbook
      isCellDel - Cellの末尾削除を行うかどうか(true:行う/false:行わない)
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.0.2.3 (2014/10/10) CellStyle の有無も判定基準に含めます。, 6.0.2.5 (2014/10/31) Cellの開始、終了番号が、マイナスのケースの対応, 6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX), 7.0.0.0 (2018/10/01) 警告:[deprecation] CellのgetCellTypeEnum()は推奨されません (POI4.0.0), 8.0.1.0 (2021/10/29) CellStyle は not null になったための修正
    • activeWorkbook

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

      public static org.apache.poi.ss.usermodel.Workbook createWorkbook(File file)
      ファイルから、Workbookオブジェクトを新規に作成します。
      パラメータ:
      file - 入力ファイル
      戻り値:
      Workbookオブジェクト
      変更履歴:
      6.0.2.3 (2014/10/10) 新規作成, 6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更, 7.0.0.0 (2018/10/01) poi-4.0.0 例外InvalidFormatExceptionは対応するtry文の本体ではスローされません
      このメソッドは、nullを返しません
    • getSheetNames

      public static String[] getSheetNames(org.apache.poi.ss.usermodel.Workbook wkbook)
      シート一覧を、Workbook から取得します。 取得元が、Workbook なので、xls , xlsx どちらの形式でも取り出せます。 EXCEL上のシート名を、配列で返します。
      パラメータ:
      wkbook - Workbookオブジェクト
      戻り値:
      シート名の配列
      変更履歴:
      6.0.2.3 (2014/10/10) 新規作成
    • getNames

      public static String[] getNames(org.apache.poi.ss.usermodel.Workbook wkbook)
      名前定義一覧を取得します。 EXCEL上に定義された名前を、配列で返します。 ここでは、名前とFormulaをタブで連結した文字列を配列で返します。 Name オブジェクトを削除すると、EXCELが開かなくなったりするので、 取りあえず一覧を作成して、手動で削除してください。 なお、名前定義には、非表示というのがありますので、ご注意ください。 ◆ 非表示になっている名前の定義を表示にする EXCEL VBA マクロ http://dev.classmethod.jp/tool/excel-delete-name/ Sub VisibleNames() Dim name For Each name In ActiveWorkbook.Names If name.Visible = False Then name.Visible = True End If Next MsgBox "すべての名前の定義を表示しました。", vbOKOnly End Sub ※ EXCEL2010 数式タブ→名前の管理 で、複数選択で、削除できます。 ただし、非表示の名前定義は、先に表示しないと、削除できません。 ◆ 名前の一括削除 EXCEL VBA マクロ http://komitsudo.blog70.fc2.com/blog-entry-104.html Sub DeleteNames() Dim name On Error Resume Next For Each name In ActiveWorkbook.Names If Not name.BuiltIn Then name.Delete End If Next MsgBox "すべての名前の定義を削除しました。", vbOKOnly End Sub
      パラメータ:
      wkbook - Workbookオブジェクト
      戻り値:
      名前定義(名前+TAB+Formula)の配列
      変更履歴:
      6.0.2.3 (2014/10/10) 新規作成, 7.0.0.0 (2018/10/01) 警告:[deprecation] WorkbookのgetNameAt(int)は推奨されません (POI4.0.0)
      このメソッドは、nullを返しません
    • getStyleNames

      public static String[] getStyleNames(org.apache.poi.ss.usermodel.Workbook wkbook)
      書式のスタイル一覧を取得します。 EXCEL上に定義された書式のスタイルを、配列で返します。 書式のスタイルの名称は、CellStyle にメソッドが定義されていません。 実クラスである HSSFCellStyle にキャストして使用する 必要があります。(XSSFCellStyle にも名称を取得するメソッドがありません。) ※ EXCEL2010 ホームタブ→セルのスタイル は、一つづつしか削除できません。 マクロは、開発タブ→Visual Basic で、挿入→標準モジュール を開き テキストを張り付けてください。 実行は、開発タブ→マクロ で、マクロ名を選択して、実行します。 最後は、削除してください。 ◆ スタイルの一括削除 EXCEL VBA マクロ http://komitsudo.blog70.fc2.com/blog-entry-104.html Sub DeleteStyle() Dim styl On Error Resume Next For Each styl In ActiveWorkbook.Styles If Not styl.BuiltIn Then styl.Delete End If Next MsgBox "すべての追加スタイルを削除しました。", vbOKOnly End Sub ◆ 名前の表示、削除、スタイルの削除の一括実行 EXCEL VBA マクロ Sub AllDelete() Call VisibleNames Call DeleteNames Call DeleteStyle MsgBox "すべての処理を完了しました。", vbOKOnly End Sub
      パラメータ:
      wkbook - Workbookオブジェクト
      戻り値:
      書式のスタイル一覧
      変更履歴:
      6.0.2.3 (2014/10/10) 新規作成
      このメソッドは、nullを返しません
    • getCellMsg

      public static String getCellMsg(org.apache.poi.ss.usermodel.Cell oCell)
      セル情報を返します。 エラー発生時に、どのセルでエラーが発生したかの情報を取得できるようにします。
      パラメータ:
      oCell - EXCELのセルオブジェクト
      戻り値:
      セル情報の文字列
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.0.3.0 (2014/11/13) セル情報を作成する時に、値もセットします。, 6.2.2.0 (2015/03/27) celKigo を求めるロジック変更, 6.3.1.0 (2015/06/28) rowNo(行番号)も引数に取るようにします。
    • getCelKigo

      public static String getCelKigo(int rowNo, int colNo)
      Excelの行番号,列番号より、セル記号を求めます。 行番号は、0から始まる数字ですが、記号化する場合は、1から始まります。 Excelの列記号とは、A,B,C,…,Z,AA,AB,…,ZZ,AAA,AAB,… と続きます。 つまり、アルファベットだけの、26進数になります。(ゼロの扱いが少し特殊です) 列番号は、0から始まる数字で、0=A,1=B,2=C,…,25=Z,26=AA,27=AB,…,701=ZZ,702=AAA,703=AAB,… EXCELの行列記号にする場合は、この列記号に、行番号を、+1して付ければよいだけです。 (※ 列番号に+1するのは、内部では0から始まる列番号ですが、表示上は1から始まります)
      パラメータ:
      rowNo - 行番号(0,1,2,…)
      colNo - 列番号(0,1,2,…)
      戻り値:
      Excelの列記号(A1,B2,C3,…)
      変更履歴:
      6.2.2.0 (2015/03/27) celKigo を求めるロジック変更, 6.3.1.0 (2015/06/28) rowNo(行番号)も引数に取るようにします。
    • main

      public static void main(String[] args)
      アプリケーションのサンプルです。 入力ファイル名 は必須で、第一引数固定です。 第二引数は、処理方法で、-ALL か、-LINE を指定します。何も指定しなければ、-ALL です。 第三引数を指定した場合は、Encode を指定します。 Usage: java org.opengion.fukurou.model.POIUtil 入力ファイル名 [処理方式] [エンコード] -A(LL) ・・・ ALL 一括処理(初期値) -L(INE) ・・・ LINE 行単位処理 -S(heet) ・・・ Sheet名一覧 -N(AME) ・・・ NAME:名前定義 -C(ellStyle) ・・・ CellStyle:書式のスタイル
      パラメータ:
      args - コマンド引数配列
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成, 6.2.3.0 (2015/05/01) パラメータ変更、textReader → extractor に変更, 6.2.4.2 (2015/05/29) 引数判定の true/false の処理が逆でした。, 6.3.9.0 (2015/11/06) Java 8 ラムダ式に変更