excel文件下載,數(shù)據(jù)庫字段datafiled檢索--JS URL傳值給servlet亂碼

           

          1 //javascript里面加密兩次,兩次才可以的。2 var url = "servlet/getText?name=" + encodeURI(encodeURI(name));
          <script language="javascript" type="text/javascript">
                  function show()
                  {
                   var name="test";
                   var admin="ok";
                   var url = "http://localhost:7001/sosuo/ggld/fleet?reloadVessel=" 
                     + encodeURI(encodeURI(name))+"
          &reloadVoyage="+ encodeURI(encodeURI(admin));
                      window.open(url);
                  }
              
          </script>

          1 //在java里面,通過指定的編碼解密即可。2 String name = URLDecoder.decode(request.getParameter("name"),"utf-8");

          web.xml配置:
          <servlet> <!-- 新添加 車隊 download -->        <servlet-name>fleetDataDownload</servlet-name>        <servlet-class>com.cenin.util.FleetDataDownload</servlet-class>    </servlet>
          <servlet-mapping>        <servlet-name>fleetDataDownload</servlet-name>        <url-pattern>/ggld/fleet</url-pattern>    </servlet-mapping>

          DataDownload.java頁面:

          package com.cenin.util;


          import java.io.*;
          import javax.servlet.*;
          import javax.servlet.http.*;
          import java.net.*;
          import java.sql.*;

          import org.apache.commons.digester.Digester;
          import org.apache.log4j.Logger;
          import com.cenin.database.DBManager;



          public class DataDownload  extends HttpServlet 
          {
              private static   Logger logger = Logger.getLogger(DataDownload .class);
              
              public void init(ServletConfig config) throws ServletException 
              {
                  super.init(config);
                  try
                  {
                  }
                  catch(Exception ex)
                  {
                      logger.info(ex.getMessage());
                  }

              }
              public void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException 
              {
                  doPost(request,response);
              }
              public void doDownload(HttpServletRequest request, HttpServletResponse response, String fileName, String vessel, String voyage)
              {
                  try
                  {
                      
                      response.reset();
                      response.setContentType("application/vnd.ms-excel");
                      response.setHeader("Content-Disposition", "inline; filename=\""+ fileName  + "\"");
                      ServletOutputStream sos = response.getOutputStream();
                      String title = "數(shù)據(jù)導出";


                      String[] fieldTitles = {"船名", "航次", "提單號", "箱號", "鉛封號", "箱型", "貨名", "重量", "體積", "發(fā)貨人", "收貨人", "裝貨港", "卸貨港"};
                      String[] fieldNames = {"szVessel", "szVoyage", "szBlNo", "szCtnNo", "szSealNo", "szCtnType", "szCargoName", "fWeight", "fVolume", "szReceiver", "szSender", "szLoadPortCode", "szDischargePortCode"};
                      int[] widths = {100, 50, 100, 120, 120, 50, 100, 50, 50, 80, 80, 80, 80};

                      Connection conn = DBManager.getInstance().getConnection();
                      Statement stmt=conn.createStatement(); 
                      String sql = "select * from NmhContainer where szVessel='" + 
                              vessel + "' and szVoyage='" + voyage + "'"; // and szBlNo='" + blno + "'";
                      ResultSet rs = stmt.executeQuery(sql);
                      OutputUtil.excelOutput(title, fieldTitles, fieldNames, widths, rs, sos, "ISO-8859-1", "GBK");
                      
                      DBManager.getInstance().freeDBResource(rs, stmt, conn);
                      
                  }
                  catch(Exception ex)
                  {
                      logger.info(ex.getMessage());
                  }
                  
              }
              public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
              {
                  try
                  {
                      String vessel = request.getParameter("reloadVessel");
                      String voyage = request.getParameter("reloadVoyage");
                      //String blno = request.getParameter("reloadBlno");
                      String name = vessel + "_" + voyage + "_" + ".xls";
                      doDownload(request, response, name, vessel, voyage);
                      
                  }
                  catch(Exception ex)
                  {
                      logger.info(ex.getMessage());
                  }

                  
                  
              }
          }

          OutputUtil.java頁面:

          package com.cenin.util;
          /*
           * 輸出PDF, Excel等格式
           * 2005.5.12 by chenyong@cenin
           * 2005.12.19
           */


          import jxl.Workbook;
          import jxl.write.*;
          import com.lowagie.text.Document;
          import com.lowagie.text.Rectangle;
          import com.lowagie.text.Font;
          import com.lowagie.text.PageSize;
          import com.lowagie.text.HeaderFooter;
          import com.lowagie.text.Phrase;
          import com.lowagie.text.Element;
          import com.lowagie.text.Table;
          import com.lowagie.text.pdf.*;
          import java.io.*;
          import java.util.*;
          import java.sql.*;
          import org.apache.log4j.Logger;


          public class OutputUtil  
          {
              private static Logger logger = Logger.getLogger(OutputUtil.class);
              /*******************************************************
              * pdf輸出表格
              * title為pdf head
              * fieldtitles為 表頭項目名稱數(shù)組
              * filenames 為  對象屬性名數(shù)組
              * widths 為 寬度%數(shù)組
              * rs為resultset
              * os 為輸出流
              * codefrom , codeto 如果需要編碼轉(zhuǎn)換
              *******************************************************/    
              public static void excelOutput(String title, String[] fieldtitles, String[] fieldnames, int[] widths, ResultSet rs, OutputStream os, String codefrom, String codeto)
              {
                  
                  try
                  {
                      int fieldnumber = fieldnames.length; //, cellnumber = fieldnumber*5;
                      if(fieldnumber!=fieldtitles.length||fieldnumber!=fieldnames.length)
                          return;

                      WritableWorkbook workbook = Workbook.createWorkbook(os);
                      WritableSheet sheet = workbook.createSheet(title, 0);
                      
                      //add field title
                      for(int i=0;i
          <fieldnumber;i++)
                      {
                          //String temp 
          = new String(fieldtitles[i].getBytes(codefrom), codeto);
                          sheet.addCell(new Label(i, 0, fieldtitles[i]));
                          
                      }
                      //add values
                      int i
          =0;
                      
          while(rs.next())
                      {
                          for(int j
          =0; j<fieldnames.length; j++)
                          {
                              if(rs.getString(fieldnames[j])!
          =null)
                              
          {
                                  //String temp1 
          = rs.getString(fieldnames[j]);
                                  
          String temp = new String(rs.getString(fieldnames[j]).getBytes("ISO-8859-1"), "GBK");
                                  sheet.addCell(new Label(j, i+1, temp));
                              }
                              else
                                  sheet.addCell(new Label(j, i+1, ""));
                          }
                          i++;
                      }
                      //write to excel
                      workbook.write();
                      workbook.close();
                      
                  }
                  catch(Exception e)
                  {
                      logger.info(e.toString());
                  }
                      
              }

          }

          /*例子
          FileOutputStream os 
          = new FileOutputStream("e:\\a.xls");
          String[] titles 
          = {"系統(tǒng)編號","員工","用戶帳號"};
          String[] fieldnames = {"lsystemUserId","staff.szname","szaccount"};
          int[] widths = {20,20,20}; 
          //OutputUtil.pdfOutput("my pdf輸出", titles, fieldnames, widths,objectList,os);
          //OutputUtil.excelOutput("excel輸出", titles, fieldnames, widths,objectList,os);

          */

           

          posted on 2012-09-20 17:04 youngturk 閱讀(452) 評論(0)  編輯  收藏 所屬分類: JavaScriptJS , DHTMLJava基礎(chǔ)Flex DEVservlet

          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統(tǒng)計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結(jié)構(gòu)
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 随州市| 晋城| 茶陵县| 安丘市| 郎溪县| 南宫市| 施秉县| 荥阳市| 长阳| 天门市| 乌恰县| 津南区| 临沂市| 双牌县| 德昌县| 凤庆县| 陕西省| 勐海县| 新兴县| 荣昌县| 日照市| 双流县| 淅川县| 广德县| 黔东| 深泽县| 大竹县| 文登市| 双辽市| 库车县| 淳安县| 洛宁县| 天气| 双流县| 思南县| 张北县| 宝应县| 翁源县| 曲阳县| 吴江市| 获嘉县|