8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Apache POI Excelの基本文法 kotlin

Last updated at Posted at 2020-10-26

現在のApache POI Excel公式ドキュメント(https://poi.apache.org/components/spreadsheet/index.html) が新旧メソッドが混ざって解説されているなど、分かりづらい部分が多かったためこちらによく使う記述をまとめました。
言語 kotlin

セットアップ

gradlle インストール
build.gradle
dependencies {
/* 2020 8月現在の安定版4.1.2*/

 'ApachePOI'
  compile("org.apache.poi:poi:4.1.2")

  'xlsxファイルを作成する場合は下記poi-ooxmlが必要'
  compile("org.apache.poi:poi-ooxml:4.1.2")

}

基本操作 

シートの作成
sample.kt

// XSSFWorkbookエンティティを作成
val workBook = XSSFWorkbook()

// エクセルシートを作成
val sheet = workBook.createSheet()

######指定セルに値を記入

sample.kt
// 値を記入するセルを指定する

// createRowで列を指定
val row = sheet.createRow(0)

// createCellで行を指定
val cell = row.createCell(0)

// 値を記入
cell.setCellValue("テスト")
シートの保存
sample.kt
val fileOutputStream = FileOutputStream("test.xlsx")

workBook.write(fileOutputStream)

fileOutputStream.close()
結果

スクリーンショット 2020-08-15 22.44.33.png

応用操作


セルの色指定
sample.kt
// スタイルインスタンスを作成
val style = workBook.createCellStyle()
// セルを黄色に設定
style.fillForegroundColor = (XSSFColor(byteArrayOf(255.toByte(), 255.toByte(), 204.toByte()), null)
// 塗りつぶしを指定
style.fillPattern = FillPatternType.SOLID_FOREGROUND
//cellにスタイルを設定
cell.setCellStyle(style)
結果

スクリーンショット 2020-08-16 16.25.52.png


フォントの設定
sample.kt
// フォントインスタンスを作成
val font = workBook.createFont()
// 文字サイズを設定
font.setFontHeightInPoints(16.toShort())
// 文字種類を設定
font.fontName = "MS Pゴシック"

val style = workBook.createCellStyle()
// スタイルにフォント情報を追加
style.setFont(font)


条件付き書式の設定

設定できる条件の一覧
https://github.com/apache/poi/blob/trunk/src/java/org/apache/poi/ss/usermodel/ComparisonOperator.java

sample.kt
val sheet = workBook.createSheet()

// 条件付き書式設定用のインスタンスを生成
val sheetCF: SheetConditionalFormatting = sheet.sheetConditionalFormatting

// 条件を設定 この場合は値が90%以下である事
val rule1 = sheetCF.createConditionalFormattingRule(ComparisonOperator.LT, "90%")

// 上記条件の時に利用するフォントを設定(フォント以外も様々な要素を設定できる)
val font = rule1.createFontFormatting()
// フォントを赤に設定
font.fontColor = XSSFColor(byteArrayOf(255.toByte(), 0.toByte(), 0.toByte()), null)

// 上記条件が有効なセルの範囲を設定(下記の場合はA1セルからA5セルまで)
val range = "A1:A5"

// 範囲は配列内に複数設定できる
val regions = arrayOf(
      CellRangeAddress.valueOf(range)
    )

// 条件を有効化
sheetCF.addConditionalFormatting(regions, rule1)


#####セルに数式を設定

sample.kt

val sheet = workBook.createSheet()
val row = sheet.createRow(0)
val cell = row.createCell(0)

// A1セル/C1セルの割合を出す数式を作成
val formula = "A1/C1"

// セルに数式を設定
cell.cellFormula = formula

// 数式を有効化する
sheet.setForceFormulaRecalculation(true)

8
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?