Apache POIを使って絵文字が含まれるエクセルを出力する

Javaでエクセルファイルを読み書きするにはApache POIを使うわけですが、😀のような絵文字を含むエクセルを作成して出力することが出来ません。
Java自体は絵文字を扱えるのですが、POIで出力すると「?」となってしまいます。

Windowsで日常的に使うツールで絵文字が扱えるものの中にエクセルがあるのですが、Javaプログラムで作成した絵文字を含むデータを出力できないのは痛い。

調べてみると他のサイトでこんなのを見つけました
ほどよくしっかり: POIで絵文字を出力するためのハック

根本原因はPOIが依存するライブラリのxmlbeansが絵文字を無効な文字と判断して「?」に変換してしまうからのようです。

xmlbeansは開発停止しているのですが、forkして改修をしている人がいました!
https://github.com/pjfanning/xmlbeans

mavenにあるので、依存ライブラリに加えれば良さそうです。
Scalaのsbtだと以下のように依存の設定をしました。

"org.apache.poi" % "poi" % "3.17",
"org.apache.poi" % "poi-ooxml" % "3.17" exclude("org.apache.xmlbeans", "xmlbeans"),
"com.github.pjfanning" % "xmlbeans" % "2.6.2",

この状態で絵文字を含むエクセルを出力すると、無事にエクセルで絵文字が表示されました!