Excelのスタイルの上限

KExcelAPIについて貴重なご意見をいただきました。

ということでKExcelAPIを使って、スタイルをどのくらい適用するとエラーになるのか確認しました。プログラムは次のように作成しました。

import link.webarata3.kexcelapi.*
import java.util.*

fun main(args: Array<String>) {
    KExcel.open("book1.xlsx").use { workbook ->
        val sheet = workbook[0]

        var y = 0
        while (y < 100000) {
            sheet[0, y] = Date()
            println(y)
            y++
        }
    }
}

単純にwhileループで100,000回ループさせて例外を吐くのを待つプログラムです。実際に実行すると次のような例外が発生しました。

Exception in thread "main" java.lang.IllegalStateException: The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook
	at org.apache.poi.xssf.model.StylesTable.createCellStyle(StylesTable.java:815)
	at org.apache.poi.xssf.usermodel.XSSFWorkbook.createCellStyle(XSSFWorkbook.java:730)
	at org.apache.poi.xssf.usermodel.XSSFWorkbook.createCellStyle(XSSFWorkbook.java:122)
	at link.webarata3.kexcelapi.KExcelKt.setValue(KExcel.kt:140)
	at link.webarata3.kexcelapi.KExcelKt.set(KExcel.kt:126)
	at TestKt.main(test.kt:10)

Cell Styleは64000個くらいしか作成できないということでした。KExcelAPIでは、先にご指摘いただいたとおりスタイルを使いまわすようなことはせず、新規作成を繰り返していますのでこのあたりを考慮する必要があります。

修正はしますが今しばらくお待ち下さい

webarata3/KExcelAPI
KotlinのExcel操作ライブラリーです. Contribute to webarata3/KExcelAPI development by creating an account on GitHub.

コメント