POI2.5.1で作成したエクセルファイルをWindows98,MEから参照すると文字化けする。

 HSSFWorkbook#createFont(String)において生成したフォントがセルにセットされたエク
 セルファイルをWindows98,Meクライアントで参照した場合、セル内の日本語が縦長の□□
 に化ける現象が発生する。

原因:

 HSSFWorkbook.createFont(String)で生成されるHSSFFontインスタンスの情報不足。
 excelfileformat.pdfの6.43 Font によると、FontRecordにはcharset情報を指定する必要
 がある。
 charset情報はHSSFFontの中ではfield_8_charsetとして表され、ANSI Japanese Shift- 
 JISの使用時には0x80(-128)がセットされるべきである。
 しかし、HSSFWorkbook.createFont(String)で生成されたインスタンスにはこの値が0固定
 でセットされており、不具合の原因となっている。

回避策:

その1.

テンプレートファイルを使用し、wookbook.getFontAt(int)でフォント情報を取り出すようにする。

その2.
  HSSFFontクラスに以下の様な定数と、メソッドを追加する。
  public static byte C_SHIFT-JIS = -128;
  public void setCharset(byte charset) {
   font.setCharset(charset);
  }
  呼び出し側は以下のようにcharset情報をセットする。
  HSSFFont font = HSSFWorkbook.createFont("MS Pゴシック");
  font.setCharset(HSSFFont.C_SHIFT-JIS);