Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

2バイト文字(全角日本語)のexcelファイルの読み込みについて

いつもお世話になっております。

poiを使いjava上でexcelファイルの操作の処理を作っています。
ローカルに存在するexcleファイルを読み込む処理にて以下のような記述でファイルを読んでいるのですが、excelファイルが全角日本語だとエラーで処理が終了してしまいます。
半角英数だと正常に処理が完了します。
poiにて既存の日本語名BOOKを読み込む方法を教えて頂けないでしょうか?
=========================
FileInputStream in = new FileInputStream("c:/tmp/あいうえお.xls");
HSSFWorkbook workbook = new HSSFWorkbook(in);
=========================
【エラー内容】
 java.io.IOException: Unable to read entire header; 0 bytes read; expected 32 bytes

2

回答

7656

閲覧

2件の回答

評価

0

やったことないけど、ShiftJISでgetBytes()して
iso-8859-1でnew String()なんかはどうなんか
な。
だめならアクセス前にリネームして、終わったら
元に戻す、だな。

評価

0

POIのバージョンはいくつでしょうか?
3.7で試したところ問題なく読み書きできました。
以前3.1だかを使っていましたが、そのときも問題は起きなかったように思います。
今回試したコードは以下です。
あいうえお.xlsは新規作成したままの空のファイルです。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class JapaneseFileNameTest {
    public static void main(String[] args) throws IOException {
        FileInputStream in = new FileInputStream("c:/tmp/あいうえお.xls");
        HSSFWorkbook workbook = new HSSFWorkbook(in);
        in.close();
        
        
        workbook.getSheetAt(0).createRow(0).createCell(0).setCellValue("あ
いうえお");
        FileOutputStream out = new FileOutputStream("c:/tmp/かきくけ
こ.xls");
        workbook.write(out);
        out.close();
        
    }
}

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。