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

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

0

POIでExcelのマクロ有無判定

Excelのマクロの有無が判定できるJavaプログラムを組もうと考えています。

マクロの有無をJavaプログラムの中で判定したいのですが、自分ではいい方法が思いつかないです。

ご教示願えればと思い、書き込みをしました。

環境:windowsXP
      Eclipse3.3
      POI3.1
      Java1.5

わかる方いたら教えていただけませんか?

2

回答

7161

閲覧

2件の回答

評価

0

そもそもマクロが含まれてると開けないんじゃなかったっけ…それはもう直ったのかな。
(今のところ)マクロは扱わないと言ってるんだから、判定できないんじゃないかなあ。

評価

0

$さん、回答ありがとうございます。


下記のソースで
マクロ有、無のエクセルファイルで開けるかを
試してみました。

public class Test{
    public static void main(String[] args){
        FileInputStream excelFile = null;
        try{
            try{
                excelFile = new FileInputStream("abc1.xls");
            }catch(FileNotFoundException fnfe){
                System.err.println("ファイルを開くのに失敗しました。"+fnfe.toString());
            }
            HSSFWorkbook fils = null;
            try{
                fils = new HSSFWorkbook(excelFile);
            }catch(IOException io){
                System.err.println("Excelファイルの形式が不正です。"+io.toString());
            }
            HSSFSheet sheet = fils.getSheet("Sheet1");
            if(sheet == null){
                System.out.println("指定のシートが見つかりません。");
            }
            HSSFRow row = sheet.getRow(1);
            if(row == null){
                System.out.println("指定のExcelの行が見つかりません。");
            }
            HSSFCell cell = row.getCell((short)1);
            if(cell == null){
                System.out.println("なし");
            }else{
                System.out.println(cell);
            }
        }finally{
            try{
                if(excelFile !=null){
                    excelFile.close();
                }
            }catch(IOException io){
                io.printStackTrace();
            }
        }
    }

}

上記のプログラムだと一応例外を出すことなく、
文字の出力などが出来るようです。
(マクロ有無問わず。)

なので、マクロの有無判定ができるのでは
と思ったのですが、自分ではいいアイディアが
浮かばず…><

教えていただけたらと思って書き込みました。

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