2015年8月5日水曜日

Poiでエクセルデータ読み込みの工夫(グループウエア)

 グループウエアへのスケジュールデータをpoiを使って、ふだん使っているエクセルデータから読むようにしている。WEBで入力したり、インポートしたりという手間を省くためだ。ただ、残念ながら、データベースにくらべ、読み込みにどうしても負荷がかかるようだ。(これも、グループウエアが遅くなる原因か?)
 そこで、キャッシュデータを使う方法を考えてみた。

public void doGet(..................

Calendar calendar = Calendar.getInstance();
 int hour = calendar.get(Calendar.HOUR_OF_DAY);
  int minute = calendar.get(Calendar.MINUTE);
 int cmin=hour*60+minute;//現在時刻 整数値

 ServletContext sc = getServletContext();
    String ptime = (String)sc.getAttribute("time");//前回のキャッシュ時の時刻
    String Cachex=(String)sc.getAttribute("cache");

    if(cmin>=Integer.parseInt(ptime)&&cmin<=5+Integer.parseInt(ptime) && Cachex!=null){
    //前回のキャッシュ作成から5分以上経過してないときは、キャッシュ利用

    out.print(Cachex);
        return;

}

Cache=ここで、poiの機能を使って読み取った 表示させたいデータ をセット
..............................................
 ServletContext scc = getServletContext();
 scc.setAttribute("cache", Cache);
 String pptime="";
pptime=Integer.toString(cmin);//hhmm形式の時刻記録
scc.setAttribute("time",pptime);

0 件のコメント:

コメントを投稿