なにか作る

なにかを作るブログです。

Apache POI で Excel 2007 以降の新色が使われている xls ファイルを扱う

 Excel 2007 以降の新色が使われている xls ファイルを HSSFWorkbook として読み込むと、互換性の問題のため、Excel 2003 以前のパレットの近似の色に自動的に変換されてしまうようだ。

 元の色を維持したまま保存するには Excel 2003 パレットの色を変更して、変換後の色を元の色に置き換える必要がある。

HSSFPalatte palette = workbook.getCustomPalette();
palette.setColorAtIndex(IndexedColors.GOLD.index, (byte) 252, (yte) 213, (byte) 180);
palette.setColorAtIndex(IndexedColors.PALE_BLUE.index, (byte) 182, (yte) 221, (byte) 232);
palette.setColorAtIndex(IndexedColors.LAVENDER.index, (byte) 204, (yte) 192, (byte) 218);

 はやく xlsx 形式に移行したほうがよさそうだ。