jxl 实例

来源:互联网 发布:淘宝好评返现不返钱 编辑:程序博客网 时间:2024/05/24 06:13
package com;


import java.io.File;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.ctdw.zk.utils.Global;
import com.ctdw.zk.utils.GlobalInitParam;
import com.sun.j2ee.blueprints.util.dao.DAONoRecordException;
import com.sun.j2ee.blueprints.util.dao.DBUtil;

public class WjqkAndKdxxAction extends DispatchAction{
    
    
    public ActionForward exportExcel1(ActionMapping actionMapping,
            ActionForm actionForm, HttpServletRequest request,
            HttpServletResponse response) {
        String kslbdm =    (String)request.getSession().getAttribute(Global.kslbdmCurrent);
        String ksq = (String)request.getSession().getAttribute(Global.ksqCurrent);
        String qxdm = (String)request.getSession().getAttribute("GROUPID");
        
        //取数据
        
        String sql = "";
        List list = null;
        try{
            DBUtil dbUtil = new DBUtil();
            list = dbUtil.selectMapList(sql);
        }catch(DAONoRecordException e){
        }catch(Exception e){
            e.printStackTrace();
        }
        
        String fileName = "";
        String filePath = "/guanli/download/wjqkAndKdxxExcel/";
        File file = new File(String.valueOf(request.getRealPath("/"))
                + filePath);
        
        if (!file.exists()) {
            file.mkdirs();
        }
        fileName = "wjqkAndKdxx_1_"+nowTimeName() + ".xls";
        filePath = String.valueOf(request.getRealPath("/")) + filePath
                + fileName;
        
        try {
            // 创建一个可写入的excel文件对象
            WritableWorkbook workbook = Workbook.createWorkbook(new File(
                    filePath));
            // 使用第一张工作表
            WritableSheet sheet = workbook.createSheet("考试考场情况", 0);
            
            WritableFont font = new WritableFont(WritableFont.ARIAL,12,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
            WritableCellFormat styleTitle = new WritableCellFormat(font);
            styleTitle.setAlignment(Alignment.CENTRE);
            styleTitle.setVerticalAlignment(VerticalAlignment.CENTRE);
            styleTitle.setBorder(Border.NONE, BorderLineStyle.THIN);
            styleTitle.setWrap(true);
            
            
            font = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
            WritableCellFormat styleHead = new WritableCellFormat(font);
            styleHead.setAlignment(Alignment.LEFT);
            styleHead.setVerticalAlignment(VerticalAlignment.CENTRE);
            styleHead.setBorder(Border.NONE, BorderLineStyle.THIN);
            styleHead.setWrap(true);
            
            font = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
            WritableCellFormat styleCellT = new WritableCellFormat(font);
            styleCellT.setAlignment(Alignment.CENTRE);
            styleCellT.setVerticalAlignment(VerticalAlignment.CENTRE);
            styleCellT.setBorder(Border.ALL, BorderLineStyle.THIN);
            styleCellT.setWrap(true);
            
            font = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
            WritableCellFormat styleCell = new WritableCellFormat(font);
            styleCell.setAlignment(Alignment.CENTRE);
            styleCell.setVerticalAlignment(VerticalAlignment.CENTRE);
            styleCell.setBorder(Border.ALL, BorderLineStyle.THIN);
            styleCell.setWrap(true);
            
            font = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
            WritableCellFormat styleCellR = new WritableCellFormat(font);
            styleCellR.setAlignment(Alignment.RIGHT);
            styleCellR.setVerticalAlignment(VerticalAlignment.CENTRE);
            styleCellR.setBorder(Border.ALL, BorderLineStyle.THIN);
            styleCellR.setWrap(true);
            
            for(int j = 2;j<11;j++){
                sheet.setColumnView(j,7);
            }
            
            sheet.mergeCells(0,0,10,0);
            sheet.setRowView(0,1000);
            sheet.addCell(new Label(0,0,"20"+ksq.substring(0,2)+"年"+ksq.substring(2,4)+"月自学考试考场情况",styleTitle));
             DecimalFormat df1=new DecimalFormat("####.00");

            
            if(list != null ){
                int listSize = list.size();
                int row = 1;
                int col = 0;
                Map map = null;
                String kssj = "";
                String ksdydm = "";
                String kcdm = "";
                String kcmc = "";
                String bprs = "";//编排人数
                String kch = "";
                int kcrs = 0;//考场人数
                int sdrs = 0;//实到人数
                int qkrs = 0;//缺考人数
                int sum_kcrs = 0;
                int sum_sdrs = 0;
                int sum_qkrs = 0;
                
                for(int i = 0; i<listSize;i++){
                    map = (Map)list.get(i);
                    kssj = String.valueOf(map.get("考试时间"));
                    ksdydm = String.valueOf(map.get("考试单元"));
                    kcdm = String.valueOf(map.get("课程代码"));
                    kcmc = String.valueOf(map.get("课程名称"));
                    bprs = String.valueOf(map.get("编排人数"));
                    kch = String.valueOf(map.get("考场号"));
                    kcrs = Integer.parseInt(String.valueOf(map.get("考场人数")));
                    sdrs = Integer.parseInt(String.valueOf(map.get("实考人数")));
                    qkrs = Integer.parseInt(String.valueOf(map.get("缺考人数")));
                    
                    
                    if(map.get("考试类别代码") != null){
                        if(i != 0){
                            for(int m =col%10 + 1;m<=10 && col != 10;m++){
                                sheet.addCell(new Label(m,row,"",styleCellT));
                                sheet.addCell(new Label(m,row+1,"",styleCell));
                            }
                            row = row + 2;
                            sheet.setRowView(row,300);
                            sheet.mergeCells(0,row,1,row);
                            sheet.addCell(new Label(0,row,"应考人数:" + String.valueOf(sum_kcrs),styleHead));
                            sheet.mergeCells(2,row,4,row);
                            sheet.addCell(new Label(2,row,"实到人数:"+ String.valueOf(sum_sdrs),styleHead));
                            sheet.mergeCells(5,row,7,row);
                            sheet.addCell(new Label(5,row,"缺考率:"+ String.valueOf(df1.format((double)sum_qkrs/(double)sum_kcrs * 100))+"%",styleHead));
                            sum_kcrs = 0;
                            sum_sdrs = 0;
                            sum_qkrs = 0;
                            
                            row = row + 2;
                            sheet.setRowView(row-1,300);
                            sheet.setRowView(row,300);
                        }
                        sheet.setRowView(row,300);
                        sheet.mergeCells(0,row,3,row);
                        sheet.addCell(new Label(0,row,"时间:"+kssj,styleHead));
                        sheet.mergeCells(4,row,6,row);
                        sheet.addCell(new Label(4,row,"单元:"+ksdydm.toUpperCase(),styleHead));
                        
                        ++row;
                        sheet.setRowView(row,300);
                        sheet.mergeCells(0,row,1,row);
                        sheet.addCell(new Label(0,row,"课程代码:"+kcdm,styleHead));
                        sheet.mergeCells(2,row,7,row);
                        sheet.addCell(new Label(2,row,"课程名称:"+kcmc,styleHead));
                        sheet.mergeCells(8,row,10,row);
                        sheet.addCell(new Label(8,row,"考场设置人数:"+bprs,styleHead));
                        
                        ++row;
                        col = 0;
                        
                    }
                    sheet.setRowView(row,300);
                    if((col + 1) % 10 == 1){
                        sheet.addCell(new Label(0,row,"考场号",styleCellT));
                        sheet.addCell(new Label(0,row+1,"实到人数",styleCellT));
                    }
                    
                    sheet.addCell(new Label(1+ (col%10),row,kch,styleCellT));
                    sheet.addCell(new Label(1+ (col%10),row+1,String.valueOf(sdrs),styleCellR));
                    
                    if(((col + 1) % 10 == 0)){
                        row = row + 2;
                    }
                    sheet.setRowView(row,300);
                    sum_kcrs = sum_kcrs +kcrs;
                    sum_qkrs = sum_qkrs + qkrs;
                    sum_sdrs = sum_sdrs + sdrs;
                    col++;
                    
                    if(i == listSize-1){
                        for(int m =col%10 + 1;m<=10 && col != 10;m++){
                            sheet.addCell(new Label(m,row,"",styleCellT));
                            sheet.addCell(new Label(m,row+1,"",styleCell));
                        }
                        sheet.setRowView(row,300);
                        sheet.mergeCells(0,row,1,row);
                        sheet.addCell(new Label(0,row,"应考人数:" + String.valueOf(sum_kcrs),styleHead));
                        sheet.mergeCells(2,row,4,row);
                        sheet.addCell(new Label(2,row,"实到人数:"+ String.valueOf(sum_sdrs),styleHead));
                        sheet.mergeCells(5,row,7,row);
                        sheet.addCell(new Label(5,row,"缺考率:"+ String.valueOf(df1.format((double)sum_qkrs/(double)sum_kcrs * 100))+"%",styleHead));
                        sum_kcrs = 0;
                        sum_sdrs = 0;
                        sum_qkrs = 0;
                    }
                }
            }

            workbook.write();
            workbook.close();
        } catch (Exception e) {
            System.out.println(e);
        }
        filePath = request.getRealPath("//guanli//download//wjqkAndKdxxExcel//")+"//";
        request.setAttribute("filePath", filePath);
        request.setAttribute("fileName", fileName);
        return actionMapping.findForward("wjqkAndKdxx_download_forward");
    }
   
    public String s_cl(String s) {
        if (s == null || s.equals("null")) {
            s = "";
            return s;
        }
        return s;
    }
    
    public static String nowTimeName() {
        String s = null;

        DateFormat dateFormat = new SimpleDateFormat("yyyyMMddkkmmsss");

        s = dateFormat.format(new Date());

        return s;
    }

}