<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ajie

    Java天下社區 http://www.javatx.cn 歡迎大家上來交流Java技術
    posts - 4, comments - 8, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Excel文檔生成解決方案 (JAVA Servlet)

    Posted on 2005-12-18 00:45 ajie 閱讀(1494) 評論(0)  編輯  收藏
    用到開源軟件POI,詳細見以下URL:
    http://jakarta.apache.org/poi/index.html

    /**
     * 該類演示了POI的應用
     * 版權 本文版權屬Java天下
     * Created on 2005-7-22
     
    */

    package bss.servlet;
    import javax.servlet.http.*;
    import javax.servlet.*;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import java.io.FileOutputStream;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Types;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Vector;
    import java.util.Map;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    /**
     * 
    @author ljfan
     * 
     * TODO To change the template for this generated type comment go to Window -
     * Preferences - Java - Code Style - Code Templates
     
    */

    public class IVR_Excel extends HttpServlet {
        
        
    //文檔標題數組名 
        private final static String sTitleArray[]  = "群發批次""產品代碼""目的省份""目的城市" };
        
    //記錄集列名
        private final static String sColumnArray[] = "push_id""pid""province""gwcity" };
        
        
    /*
         * 按一定的規則生成文件名
         * 規則為 IVRExcel_YYYY-MM-dd-mm-SSS.xls
         
    */

        
        
    private static String generateFileName () {
            String sFileName 
    = "IVRExcel_";
            SimpleDateFormat sdf 
    = new SimpleDateFormat ("yyyy-MM-dd-HH-mm-SSS");
            Calendar c 
    = Calendar.getInstance();
            sFileName 
    += sdf.format(c.getTime());
            sFileName 
    += ".xls";
            
    return sFileName;
        }

        
        
    /**
         * 將記錄信息導出為xls格式文件.
         * 
         * 
    @param fieldTitles
         *            工作表的字段標題數組(首行)
         * 
    @param propertyNames
         *            每行記錄對應的值對象的屬性名稱數組
         * 
    @param records
         *            記錄集map, 其中key為記錄集中的列名, value為對應列名的值(vector)
         * 
    @param fileName
         *            導出文件的名稱
         
    */

        
    public static void exportXLSFile(String[] fieldTitles,
                String[] propertyNames, Map records, String fileName) 
    {
            
    if (fieldTitles.length != propertyNames.length) {
                
    throw new IllegalArgumentException("工作表的字段標題列數必須和值對象的屬性數相等!");
            }

            HSSFWorkbook workbook 
    = new HSSFWorkbook();
            HSSFSheet sheet 
    = workbook.createSheet();
            
    //設置標題
            HSSFRow row = sheet.createRow(0);
            
    for (int k = 0; k < fieldTitles.length; k++{
                HSSFCell cell[] 
    = new HSSFCell[fieldTitles.length];
                cell[k] 
    = row.createCell((short) k);
                cell[k].setEncoding(HSSFCell.ENCODING_UTF_16);
                cell[k].setCellType(HSSFCell.CELL_TYPE_STRING);
                cell[k].setCellValue(fieldTitles[k]);
            }

            
    //寫入數據庫中的記錄集數據
            
    //取得記錄集行數
            Iterator iter = records.values().iterator();
            Vector v1 
    = (Vector) iter.next();
            
    int rowNum = v1.size() + 1;
            
            
    for (int i = 1; i < rowNum; i++{
                HSSFRow _row 
    = sheet.createRow(i);
                
    for (int j = 0; j < propertyNames.length; j++{
                    Vector value 
    = (Vector) records.get(propertyNames[j]);
                    HSSFCell cell[] 
    = new HSSFCell[propertyNames.length];
                    cell[j] 
    = _row.createCell((short) j);
                    cell[j].setEncoding(HSSFCell.ENCODING_UTF_16);
                    cell[j].setCellType(HSSFCell.CELL_TYPE_STRING);
                    cell[j].setCellValue((String) value.get(i 
    - 1));
                }

            }

            
    try {
                String outputFile 
    = fileName;
                FileOutputStream fOut 
    = new FileOutputStream(outputFile);
                workbook.write(fOut);
                fOut.flush();
                fOut.close();
            }
     catch (Exception e) {
                System.out.println(e.getMessage());
            }

        }

        
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
                
    throws ServletException {
            
    long start = System.currentTimeMillis();
            
            String sRootDir 
    = this.getServletConfig().getServletContext().getRealPath(
           req.getServletPath());
            System.out.println(sRootDir);
         
            
    /*
          * 得到根路徑
          * servlet部署名為ExcelServlet
          
    */

            
            sRootDir 
    = sRootDir.substring(0, sRootDir.indexOf("ExcelServlet"));
         
            
    //先在服務器根目錄下建Excel目錄
            sRootDir += "Excel\\";
         sRootDir 
    = sRootDir.replace("\\""\\\\");
         String sOutputPath 
    = generateFileName();
         System.out.println(sRootDir);
         sOutputPath 
    = sRootDir + sOutputPath;
         System.out.println(sOutputPath);
            
            
    /*
             * 獲取URL帶的參數 
             * param1 : PushID 
             * param2 : Province 
             * param3 : Pid 
             * param4 : Opp
             * param5 : StartDate 
             * param6 : EndDate
             
    */

            
            
    int iID = 0;
            
    int iOpp = 0;
            
    if (req.getParameter("ID"!= null{
                
    try {
                    iID 
    = Integer.parseInt(req.getParameter("ID"));
                }
     catch (Exception e) {
                    iID 
    = 0;
                }

            }

            
    if (req.getParameter("opp"!= null{
                
    try {
                    iOpp 
    = Integer.parseInt(req.getParameter("opp"));
                }
     catch (Exception e) {
                    iOpp 
    = 0;
                }

            }

            String sPid 
    = req.getParameter("pid").trim();
            String sProvince 
    = req.getParameter("province").trim();
            String sStartDate 
    = req.getParameter("StartDate");
            
    if (sStartDate == null)
                sStartDate 
    = "";
            String sEndDate 
    = req.getParameter("EndDate");
            
    if (sEndDate == null)
                sEndDate 
    = "";
            
            
    //get data from DB
            Map DBMap = getFromDB(iID, sProvince, sPid, iOpp, sStartDate, sEndDate );
            
            exportXLSFile(sTitleArray, sColumnArray, DBMap, sOutputPath);
            
            
    long end = System.currentTimeMillis();
            System.out.println(
    "Excel文檔已經生成,共花費: " + (end-start) +" ms");
         
        }

        
     
    public void doPost(HttpServletRequest res, HttpServletResponse resp)
                
    throws ServletException {
            doGet(res, resp);
        }

        
        
    public static Map getFromDB(int iID, String sProvince, String sPid, int iOpp, String sStartDate, String sEndDate) {
            Map map 
    = new HashMap();
            
            Connection con 
    = null;
            CallableStatement cstmt 
    = null;
            ResultSet rs 
    = null;
            String sDBURL 
    = "172.16.18.113";
            String sDBName 
    = "DetailQuery";
            String sLoginNameUser 
    = "*****";
            String sPasswordUser 
    = "*****";
            String sTitles[] 
    = "群發批次""產品代碼""目的省份""目的城市" };
            String sColumn[] 
    = "push_id""pid""province""gwcity" };
            Vector v[] 
    = new Vector[sColumn.length];
            
    for (int i = 0; i < sColumn.length; i++{
                v[i] 
    = new Vector();
            }

            
    //get ResultSet from db
            try {
                Class.forName(
    "com.microsoft.jdbc.sqlserver.SQLServerDriver");
                con 
    = DriverManager.getConnection("jdbc:microsoft:sqlserver://"
                        
    + sDBURL + ":1433;Databasename=" + sDBName, sLoginNameUser,
                        sPasswordUser);
                cstmt 
    = con
                        .prepareCall(
    "{? = call RED_P_SMSPUSH_Query_IVR_main_demo (?, ?, ?, ?, ?, ?)}");
                cstmt.registerOutParameter(
    1, Types.INTEGER);
                cstmt.setInt(
    2, iID);
             cstmt.setString(
    3, sProvince);
             cstmt.setString(
    4, sPid);
             cstmt.setInt(
    5, iOpp);
             cstmt.setString(
    6, sStartDate);
             cstmt.setString(
    7, sEndDate);
             cstmt.execute();
             rs 
    = cstmt.getResultSet();
                
    while (rs.next()) {
                   
    for (int i = 0; i < sColumn.length; i++{
                       v[i].add(rs.getString(sColumn[i]));
                   }

                }

                
                
    for (int i = 0; i < sColumn.length; i++{
                    map.put(sColumn[i], v[i]);
                }

                rs.close();
                cstmt.close();
                con.close();
            }
     catch (Exception e) {
                System.out.println(e.getMessage());
            }

            
    return map;
        }

        
        
    // for simple test
        
        
    /*
        public static void main (String args[]) {
        
            String sFileName = IVR_Excel.generateFileName();
            System.out.println(sFileName);
            int iID = 0;
            int iOpp = 0;
            String sProvince = "all";
            String sPid = "all";
            String sStartDate = "2005-7-1";
            String sEndDate = "2005-7-21";
            
            //get data from DB
            Map DBMap = getFromDB(iID, sProvince, sPid, iOpp, sStartDate, sEndDate );
            exportXLSFile(sTitleArray, sColumnArray, DBMap, "Test.xls");
        
            System.out.println("已經成功生成Excle文檔");
        }
        
    */

        
    }




    Java天下社區
    http://www.javatx.cn
    歡迎大家上來交流Java技術。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲男人天堂2018av| 四虎成人免费影院网址| 男女男精品网站免费观看| 亚洲经典在线中文字幕| 四虎国产精品成人免费久久| 亚洲丁香色婷婷综合欲色啪| 亚洲欧洲精品成人久久奇米网 | 67pao强力打造67194在线午夜亚洲| 色婷婷精品免费视频| 亚洲人成网站18禁止久久影院| 丁香六月婷婷精品免费观看 | 亚洲精品欧美综合四区| 亚洲国产精品一区二区成人片国内| 中国videos性高清免费| 亚洲精品中文字幕乱码影院| 国产精品V亚洲精品V日韩精品| 免费观看一区二区三区| 日韩精品无码免费视频| 亚洲丁香婷婷综合久久| 亚洲一卡2卡4卡5卡6卡残暴在线| 免费看黄视频网站| 十九岁在线观看免费完整版电影| 亚洲免费网站在线观看| 亚洲精品视频在线播放| 久久亚洲精品无码AV红樱桃| 最新国产AV无码专区亚洲| 亚洲精品第一国产综合精品99| 全部免费毛片在线播放| 成人片黄网站色大片免费观看APP| 亚洲精品电影天堂网| 久久夜色精品国产亚洲| 亚洲人成人77777网站| 亚洲国产成人精品女人久久久| 男人j进入女人j内部免费网站| 亚洲图片中文字幕| 亚洲永久中文字幕在线| 亚洲日本乱码一区二区在线二产线 | 成人免费无遮挡无码黄漫视频| 亚洲第一精品电影网| 亚洲avav天堂av在线不卡| 亚洲大尺度无码专区尤物|