<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技術。

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


    網站導航:
     
    主站蜘蛛池模板: JLZZJLZZ亚洲乱熟无码| 亚洲国语在线视频手机在线| 野花香高清视频在线观看免费| 亚洲免费精彩视频在线观看| 91在线视频免费91| 国产人成网在线播放VA免费| 亚洲黄色网站视频| 亚洲国模精品一区| 18国产精品白浆在线观看免费| 男女男精品网站免费观看| 亚洲日本精品一区二区| 国产成人免费a在线资源| 欧洲人成在线免费| 亚洲国产av玩弄放荡人妇| 亚洲精品无码专区久久久| 日韩黄色免费观看| 午夜精品免费在线观看| 男男gvh肉在线观看免费| 久久久久亚洲精品无码蜜桃| 国产成人免费高清在线观看| 51精品视频免费国产专区| 日本黄页网址在线看免费不卡| 亚洲妓女综合网99| 最新精品亚洲成a人在线观看| 西西大胆无码视频免费| 亚洲免费人成在线视频观看| 亚洲av无码一区二区三区天堂| 99久久精品国产亚洲| 亚洲色一色噜一噜噜噜| 成全高清视频免费观看| 中文字幕在线观看免费视频| 国产人成网在线播放VA免费| 亚洲成a∧人片在线观看无码| 亚洲精品视频专区| 久久亚洲一区二区| 亚洲天堂中文字幕在线| 日本高清免费中文字幕不卡| 亚洲免费中文字幕| 久久国产高潮流白浆免费观看| 久久免费香蕉视频| 青青久久精品国产免费看|