- PR -

jakarta POI HSSF で関数式の日本語が化ける

1
投稿者投稿内容
cutback
会議室デビュー日: 2003/05/16
投稿数: 12
投稿日時: 2004-10-12 16:24
POIのHSSFでExcelファイルを編集するPGを作成しているのですが、
関数式に含まれる日本語が文字化けします。

OS:Windows2000
Java:1.4
POI:poi-2.5.1-final-20040804.jar です。

---- サンプルソース ---------------------
/**
* A1セルに関数式"=SUMIF(G2,"あいう",G3:G6)"
* を設定したExcelファイルを読込む
* @param args args[0]:Excelファイルパス
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File in = new File(args[0]);
File out = new File(in.getParentFile(), "result_" + in.getName());
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(in);
fos = new FileOutputStream(out);
HSSFWorkbook workbook = new HSSFWorkbook(fis);
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
if (cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) {
// cell.setEncoding(HSSFCell.ENCODING_UTF_16);
System.out.println("formula=" + cell.getCellFormula());
}
workbook.write(fos);
} finally {
if (fis != null) {
fis.close();
}
if (fos != null) {
fos.close();
}
}
}
-- 結果 --
formula=SUMIF(G2,"???",G3:G6)
------------------------------------------

http://jakarta.apache.org/poi/hssf/formula.html
を参照しましたがマルチバイト文字に関して特に触れられていないようでした。
#見落とし&勘違いがあるかもしれませんが…

何かご存知の方、よろしくお願いします。

[ メッセージ編集済み 編集者: cutback 編集日時 2004-10-12 18:38 ]
会議室デビュー日: 2008/07/25
投稿数: 2
投稿日時: 2008-07-25 10:09
今更ながらですが、同じ事象に悩んでおり、投稿致しました。

様々な条件により、最新のPOIを使用できなく、
(最新のPOIでは解消されているのは確認できてはいるのですが。。。)
cutbackさんと同じpoi-2.5.1-final-20040804.jar を使用しています。

情報をお持ちの方、よろしくお願いします。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-07-25 12:18
状況によりますが・・・

最初から関数を埋め込んだテンプレートを読み込んだ方がトラブルは少ないと思います。
特に2.5あたりはマルチバイト系がかなり胡散臭いので動的埋め込みは避けた方が賢明かと。
会議室デビュー日: 2008/07/25
投稿数: 2
投稿日時: 2008-07-25 16:18
わたなべ様

ご返信ありがとうございます。


説明不足でしたので、補足させていただきます。
事象は以下になります。

1.もともと関数に日本語が設定されたExcelファイルをテンプレートとして用意しています。
2.POIを通して編集します(該当の関数が埋め込まれているセルは編集しません)。
3.編集後のExcelファイルでは、該当の関数が文字化けしています。

3のExcelファイルをダウンロードさせたいです。
ですので、2の編集にて、文字化けしないようにしたいです。

bugzillaを含め、調べてみたのですが、情報が見つかりません。
(私の英語力では、見落としている可能性もあるのですが。。。)

以上、宜しくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)