zoukankan      html  css  js  c++  java
  • Java导出Excel文件(jxl.jar版)(详细解读)

    import jxl.*;
    import jxl.write.*;

    public class ExportData
    {
        public void exportProduct()
        {
            try
            {  
                //类login(javabean)的managed-bean-scope属性设置成session,这样可以调用login中当前用户的id。这个 非常有用。
                login me = (login) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("login");
                String userId = String.valueOf(me.getID_());
                //设置导出文件在服务器上的存储路径,getBasedir()和getSeparator()根据服务器OS来判断当前路径和连接符,Windows 和Linux不一样。
                String storedir  = getBasedir() + userId + getSeparator();
                //System.out.println("storedir:" + storedir);
                //System.out.println("main.isDirExists(storedir):" + main.isDirExists(storedir));
                //如果storedir文件不存在,就创建它
                if(main.isDirExists(storedir))
                    {
                    storedir = storedir + "exportExcel.xls";
                    File file = new File(storedir);
                    if(file.exists())
                        file.delete();
                    //创建一个excel文件
                    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(storedir));
                    //创建一个工作簿
                    jxl.write.WritableSheet ws = wwb.createSheet("data", 0);
                    //定义excel的文本单元格
                    jxl.write.Label label;
                    //定义excel的数值单元格
                    jxl.write.Number number;
                    //格式化数值
                    jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.####");
                    jxl.write.WritableCellFormat wcNf = new jxl.write.WritableCellFormat(nf);
                    //从0开始,设置列标题
                    label = new jxl.write.Label(0,0, "物品编码");
                    ws.addCell(label);
                    label = new jxl.write.Label(1,0, "物品描述");
                    ws.addCell(label);
                    label = new jxl.write.Label(2,0, "库存数量");
                    ws.addCell(label);
                    label = new jxl.write.Label(3,0, "入库日期");
                    ws.addCell(label);
                    label = new jxl.write.Label(4,0, "在库天数");
                    ws.addCell(label);
                    label = new jxl.write.Label(5,0, "在库月份");
                    ws.addCell(label);
                    label = new jxl.write.Label(6,0, "入库数量");
                    ws.addCell(label);
                    label = new jxl.write.Label(7,0, "成本");
                    ws.addCell(label);
                    label = new jxl.write.Label(8,0, "总成本");
                    ws.addCell(label);
                    main.oracleSession.clear();
                    //循环提取表中的数据
                    Query query = main.oracleSession.getNamedQuery("masQuery.selectProductStock");
                          List list = query.list();
                          String pItemCode,pItemDesc,pQuantity,pTranDate,pDays,pMonths,pTranQuantity,pCost,pTotalCost;
                          for(int i=0;i<list.size();i++)
                          {
                            pItemCode=pItemDesc=pQuantity=pTranDate=pDays=pMonths=pTranQuantity=pCost=pTotalCost="";
                               Object obj[] = (Object[])list.get(i);
                               if(obj[0]!=null)
                        pItemCode = String.valueOf(obj[0]);
                            if(obj[1]!=null)
                              pItemDesc = String.valueOf(obj[1]);
                            if(obj[2]!=null)
                                 pQuantity = String.valueOf(obj[2]);
                            if(obj[3]!=null)
                              pTranDate = String.valueOf(obj[3]);
                            if(obj[4]!=null)
                              pDays = String.valueOf(obj[4]);
                               if(obj[5]!=null)
                              pMonths = String.valueOf(obj[5]);
                            if(obj[6]!=null)
                              pTranQuantity = String.valueOf(obj[6]);
                            if(obj[7]!=null)
                              pCost = String.valueOf(obj[7]);
                               if(obj[8]!=null)
                              pTotalCost = String.valueOf(obj[8]);
                             //写入数据行
                               label = new jxl.write.Label(0,i+1, pItemCode);
                      ws.addCell(label);
                      label = new jxl.write.Label(1,i+1, pItemDesc);
                      ws.addCell(label);
                      //这一个是数值型数据,没有格式化数据
                      number = new jxl.write.Number(2,i+1, Integer.valueOf(pQuantity));
                      ws.addCell(number);
                      label = new jxl.write.Label(3,i+1, pTranDate);
                      ws.addCell(label);
                      number = new jxl.write.Number(4,i+1, Integer.valueOf(pDays));
                      ws.addCell(number);
                      number = new jxl.write.Number(5,i+1, Integer.valueOf(pMonths));
                      ws.addCell(number);
                      number = new jxl.write.Number(6,i+1, Integer.valueOf(pTranQuantity));
                      ws.addCell(number);
                      //这一个是数值型数据,格式化数据,保留4位小数
                      number = new jxl.write.Number(7,i+1, Float.valueOf(pCost), wcNf);
                      ws.addCell(number);
                      number = new jxl.write.Number(8,i+1, Float.valueOf(pTotalCost), wcNf);
                      ws.addCell(number);
                             }
                    //关闭文件
                    wwb.write();
                    wwb.close();
                    myMain my = new myMain();
                    //弹出下载框
                    my.mDownload(storedir);
                    }            
            }catch(Exception ex){ex.printStackTrace();}
        }
    }
  • 相关阅读:
    利用kettle中的JS来完成ETL数据校验
    spring cloud学习地址
    centos7 卸载 gitlab
    为什么WEB-INF外的jsp无法根据cookie享受国际化
    改变maven父子项目视图为树状
    maven profiles、filters、resources学习笔记 及 常用 plugin demo
    Tomcat 签名认证配置简例
    CentOS 开机启动
    Tomcat 关闭时报错
    比较全的log4j示例
  • 原文地址:https://www.cnblogs.com/liuzhengdao/p/1662538.html
Copyright © 2011-2022 走看看