クラス ExcelModel
- java.lang.Object
-
- org.opengion.fukurou.model.ExcelModel
-
public class ExcelModel extends java.lang.ObjectPOI による、EXCELバイナリファイルに対する、データモデルクラスです。 共通的な EXCEL処理 を集約しています。 staticメソッドによる簡易的なアクセスの他に、順次処理も可能なように 現在アクセス中の、Workbook、Sheet、Row、Cell オブジェクトを内部で管理しています。 入力形式は、openXML形式にも対応しています。 ファイルの内容に応じて、.xlsと.xlsxのどちらで読み取るかは、内部的に 自動判定されます。- 機能分類
- その他
- 変更履歴:
- 6.0.2.0 (2014/09/19) 新規作成
- バージョン
- 6.0
- 作成者
- Kazuhiko Hasegawa
- 導入されたバージョン:
- JDK7.0,
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 ExcelModel(java.io.File file)EXCELファイルのWookbookのデータ処理モデルを作成します。ExcelModel(java.io.File file, boolean isOpen)EXCELファイルのWookbookのデータ処理モデルを作成します。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 voidactiveWorkbook(boolean isCellDel)Workbook の全Sheetを対象に、空行を取り除き、全体をシュリンクします。voidaddImageFile(java.lang.String imgFile, int shtNo, int rowNo, int colNo)指定のシートの行・列の箇所に、イメージファイルを挿入します。voidaddImageFile(java.lang.String imgFile, int shtNo, int row1, int col1, int row2, int col2, int dx1, int dy1, int dx2, int dy2)指定のシートの行・列の箇所に、イメージファイルを挿入します。voidcreateRow(int rowNo)Excelの指定行のRowオブジェクトを作成します。voidcreateSheet(java.lang.String shtName, boolean isOverwrite)内部 Workbookより、新しいSheetを作ります。intgetFirstRowNum()内部 Workbookの 現在Sheet の最初の行番号を返します。intgetLastRowNum()内部 Workbookの 現在Sheet の最後の行番号を返します。java.lang.String[]getNames()名前定義一覧を内部の Workbook から取得します。intgetNumberOfSheets()内部 Workbookの Sheet数を返します。java.lang.StringgetSheetName(int shtNo)内部 Workbook の 指定のSheet番号のシート名前を返します。java.lang.String[]getSheetNames()シート一覧を、内部の Workbook から取得します。intgetSheetNo(java.lang.String shtName)内部 Workbook の 指定のSheet名のシート番号を返します。java.lang.String[]getStyleNames()書式のスタイル一覧を内部の Workbook から取得します。java.lang.StringgetValue(int rowNo, int colNo)現在のrow にあるセルの属性値を返します。java.lang.String[]getValues(int rowNo)現在のRow にあるセルの属性値を配列で返します。static voidmain(java.lang.String[] args)アプリケーションのサンプルです。voidremoveCell(int startCellNum)Excelの処理中のRowオブジェクトの指定カラム以降の余計なCellオブジェクトを削除します。voidremoveRow(int startRowNum)Excelの指定行以降の余計なRowオブジェクトを削除します。voidremoveSheet(int fromNo, int toNo)Excelの指定Sheetオブジェクトを削除します。voidsaveFile(java.io.File file)内部 Workbook オブジェクトをファイルに書き出します。voidsetAddTitleSheet(java.lang.String shtName)Sheet一覧を先頭Sheetに作成する場合のSheet名を指定します。voidsetCellLink(java.lang.String linkVal, int colNo)Excelの指定セルにHyperlinkを設定します。voidsetCellStyle()データ設定する セルに、罫線を追加します。voidsetCellValue(java.lang.String dataVal, int colNo)Excelの指定セルにデータを設定します。voidsetCellValue(java.lang.String dataVal, int colNo, boolean isNumber)Excelの指定セルにデータを設定します。voidsetDataStartRow(int st)データ行の書き込み開始位置の行番号を設定します。voidsetFont(java.lang.String fontName, short fontPoint)内部 Workbook に、フォント名、フォントサイズを設定します。voidsetRecalcSheetName(java.lang.String[] sheets)EXCELで、出力処理の最後にセルの計算式の再計算をさせるシート名の配列を指定します。voidsetRefSheetName(java.lang.String refSheetName)内部 Workbookより、雛形Sheetをセットします。voidsetSheetName(int shtNo, java.lang.String shtName)内部 Workbook の指定のシート番号の Sheet の名前を設定します。voidsetValues(java.lang.String[] vals, int rowNo)row にあるセルのオブジェクト値を設定します。voidsetValues(java.lang.String[] vals, int rowNo, boolean[] isNums)row にあるセルのオブジェクト値を設定します。voidsheetCopy(TextConverter<java.lang.String,java.lang.String> conv, java.lang.String shtName)Workbook の雛形シートのTextConverter した、新しいSheetを作成します。voidsheetSelected(boolean isSelect)現在のシートを選択済み(true)か、非選択済み(false)に設定します。voidtextConverter(java.util.Map<java.lang.String,java.lang.String> convMap)Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。voidtextConverter(TextConverter<java.lang.String,java.lang.String> conv)Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。voiduseAutoCellSize(boolean flag)全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。voiduseAutoCellSize(boolean flag, int count)全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。
-
-
-
コンストラクタの詳細
-
ExcelModel
public ExcelModel(java.io.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(java.io.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(java.lang.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(java.lang.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(java.lang.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(java.lang.String refSheetName)
内部 Workbookより、雛形Sheetをセットします。 これは、雛形シートを使用する場合に、使います。このメソッドが呼ばれると、 雛形シートを使用すると判定されます。 雛形シート名が、内部 Workbook に存在しない場合は、エラーになります。 ただし、null をセットした場合は、最初のシートを雛形シートとして使用すると 判定します。- パラメータ:
refSheetName- 参照シート名(nullの場合、参照シート使用する場合は、先頭のシート)- 変更履歴:
- 6.0.2.0 (2014/09/19) 新規作成
-
createSheet
public void createSheet(java.lang.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, java.lang.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 java.lang.String getSheetName(int shtNo)
内部 Workbook の 指定のSheet番号のシート名前を返します。 シートが存在しない場合は、null を返します。 この処理を行うと、内部の Sheet にも、ここで見つけた Sheet が設定されます。- パラメータ:
shtNo- シート番号- 戻り値:
- shtName シート名
- 変更履歴:
- 6.0.2.0 (2014/09/19) 新規作成
-
getSheetNo
public int getSheetNo(java.lang.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(java.lang.String[] vals, int rowNo)row にあるセルのオブジェクト値を設定します。 行が存在しない場合、行を追加します。 この処理を行うと、内部の Rowオブジェクトがなければ新規作成されます。- パラメータ:
vals- 新しい配列値。rowNo- 値が変更される行(無視されます)- 変更履歴:
- 6.0.2.0 (2014/09/19) 新規作成
-
setValues
public void setValues(java.lang.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(java.lang.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(java.lang.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(java.lang.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 java.lang.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 java.lang.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(java.lang.String imgFile, int shtNo, int rowNo, int colNo)指定のシートの行・列の箇所に、イメージファイルを挿入します。 ここでは、セル範囲ではなく、指定の行列の箇所に、アンカーを設定して、画像ファイルを 挿入します。一応、リサイズして、元の大きさ近くに戻しますが、縦横比が変わってしまいます。 正確に挿入する場合は、セル範囲の指定と、マージンを指定しなければなりませんが、 微調整が必要です。 この処理で使用される Sheetオブジェクトは一時的に作成されます。(キャッシュされません) 一連処理のどのタイミングで実行しても、内部の状態には影響はありません。- パラメータ:
imgFile- 挿入するイメージファイル名shtNo- シート番号rowNo- 挿入する行colNo- 挿入する列- 変更履歴:
- 6.0.2.3 (2014/10/10) 新規作成
-
addImageFile
public void addImageFile(java.lang.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型が見つかりました対応
-
saveFile
public void saveFile(java.io.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(java.util.Map<java.lang.String,java.lang.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<java.lang.String,java.lang.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<java.lang.String,java.lang.String> conv, java.lang.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 java.lang.String[] getSheetNames()
シート一覧を、内部の Workbook から取得します。 取得元が、Workbook なので、xls , xlsx どちらの形式でも取り出せます。 EXCEL上のシート名を、配列で返します。- 戻り値:
- シート名の配列
- 関連項目:
POIUtil.getSheetNames( Workbook )- 変更履歴:
- 6.2.6.0 (2015/06/19) 新規作成
-
getNames
public java.lang.String[] getNames()
名前定義一覧を内部の Workbook から取得します。 EXCEL上に定義された名前を、配列で返します。 ここでは、名前とFormulaをタブで連結した文字列を配列で返します。 Name オブジェクトを削除すると、EXCELが開かなくなったりするので、 取りあえず一覧を作成して、手動で削除してください。 なお、名前定義には、非表示というのがありますので、ご注意ください。- 戻り値:
- 名前定義(名前+TAB+Formula)の配列
- 関連項目:
POIUtil.getNames( Workbook )- 変更履歴:
- 6.2.6.0 (2015/06/19) 新規作成
- このメソッドは、nullを返しません
-
getStyleNames
public java.lang.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(java.lang.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) 新規作成
-
-