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

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

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

    posts - 22,comments - 35,trackbacks - 0
    package ?com.jagie.test;
    import ?java.io. * ;
    import ?jxl. * ;
    import ?jxl.write. * ;
    import ?jxl.format. * ;
    import ?java.util. * ;
    import ?java.awt.Color;
    public ? class ?Test {

    public ? static ? void ?writeExcel(OutputStream?os)? throws ?Exception? {
    jxl.write.WritableWorkbook?wwb?
    = ?Workbook.createWorkbook(os);
    jxl.write.WritableSheet?ws?
    = ?wwb.createSheet( " TestSheet1 " ,? 0 );
    jxl.write.Label?labelC?
    = ? new ?jxl.write.Label( 0 ,? 0 ,? " 我愛中國 " );
    ws.addCell(labelC);
    jxl.write.WritableFont?wfc?
    = ? new ?jxl.write.WritableFont(WritableFont.ARIAL,
    20 ,?WritableFont.BOLD,? false ,
    UnderlineStyle.NO_UNDERLINE,?jxl.format.Colour.GREEN);
    jxl.write.WritableCellFormat?wcfFC?
    = ? new ?jxl.write.WritableCellFormat(wfc);
    wcfFC.setBackground(jxl.format.Colour.RED);
    labelC?
    = ? new ?jxl.write.Label( 6 ,? 0 ,? " 中國愛我 " ,wcfFC);
    ws.addCell(labelC);
    // 寫入Exel工作表
    wwb.write();
    // 關(guān)閉Excel工作薄對(duì)象
    wwb.close();

    }


    // 最好寫一個(gè)這樣的main方法來測(cè)試一下你的這個(gè)class是否寫好了。
    public ? static ? void ?main(String[]?args) throws ?Exception {
    File?f
    = new ?File( " kk.xls " );
    f.createNewFile();
    writeExcel(
    new ?FileOutputStream(f));
    }


    }


    寫一個(gè)jsp,來利用Test這個(gè)javabean輸出excel文檔。

    ///////////////////////////test_excel.jsp//////////////////////////

    <%@page import="com.jagie.test.Test" %>
    <%
    response.reset();
    response.setContentType("application/vnd.ms-excel");
    Test.writeExcel(response.getOutputStream());
    %>

    這樣就大功告成了,你用ie訪問test_excel.jsp就能在ie里面打開動(dòng)態(tài)生成的excel文檔了。一點(diǎn)亂碼也沒有。

    也許有人會(huì)問:response.reset();可不可以不要這一句,我的建議是一定要寫,除非你能保證response的buffer里面沒有別的東西。

    還有人也許會(huì)問:我在jsp開頭加上<%@page contentType="application/vnd.ms-excel;charset=GBK" %>這一句,去掉response.setContentType("application/vnd.ms-excel");行不行?回答這個(gè)問題很簡(jiǎn)單,就是查看jsp服務(wù)器編譯jsp后生成的java代碼,如果改成這樣,我的welogic7編譯test_excel.jsp后生成的java文件的示意性代碼是這樣的:

    public void _jspService(javax.servlet.http.HttpServletRequest request,
    javax.servlet.http.HttpServletResponse response) throws java.io.IOException,
    javax.servlet.ServletException {

    // declare and set well-known variables:
    javax.servlet.ServletConfig config = getServletConfig();
    javax.servlet.ServletContext application = config.getServletContext();
    javax.servlet.jsp.tagext.Tag _activeTag = null;
    // variables for Tag extension protocol

    Object page = this;
    javax.servlet.jsp.JspWriter out;
    javax.servlet.jsp.PageContext pageContext =
    javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this,
    request, response, null, true, 8192, true);

    response.setHeader("Content-Type",
    "application/vnd.ms-excel; charset=GBK");
    out = pageContext.getOut();
    JspWriter _originalOut = out;

    javax.servlet.http.HttpSession session = request.getSession(true);

    try { // error page try block

    response.setContentType("application/vnd.ms-excel;charset=GBK");

    out.print("\r\n\r\n\r\n\r\n");
    out.print("\r\n");
    //[ /test_excel.jsp; Line: 6]
    response.reset(); //[ /test_excel.jsp; Line: 7]
    //response.setContentType("application/vnd.ms-excel");
    //[ /test_excel.jsp; Line: 8]
    Test.writeExcel(response.getOutputStream()); //[ /test_excel.jsp; Line: 9]
    } catch (Throwable __ee) {
    while (out != null && out != _originalOut) out = pageContext.popBody();
    ((weblogic.servlet.jsp.PageContextImpl)pageContext).handlePageException((Throwable)__ee);
    }

    //before final close brace...
    }

    很明顯,屏蔽response.setContentType("application/vnd.ms-excel");后,在Test.writeExcel(response.getOutputStream());之前,response.reset(); 之后沒有設(shè)置response contenttype的正確類型,當(dāng)然輸出為亂碼了。而正確輸出excel的jsp的編譯后源碼是這樣的:

    public void _jspService(javax.servlet.http.HttpServletRequest request,
    javax.servlet.http.HttpServletResponse response) throws java.io.IOException,
    javax.servlet.ServletException
    {

    // declare and set well-known variables:
    javax.servlet.ServletConfig config = getServletConfig();
    javax.servlet.ServletContext application = config.getServletContext();
    javax.servlet.jsp.tagext.Tag _activeTag = null;
    // variables for Tag extension protocol

    Object page = this;
    javax.servlet.jsp.JspWriter out;
    javax.servlet.jsp.PageContext pageContext =
    javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(
    this, request, response, null, true, 8192, true);

    out = pageContext.getOut();
    JspWriter _originalOut = out;

    javax.servlet.http.HttpSession session = request.getSession(true);

    try { // error page try block

    out.print("\r\n");
    //[ /test_excel.jsp; Line: 2]
    response.reset(); //[ /test_excel.jsp; Line: 3]
    response.setContentType("application/vnd.ms-excel"); //[ /test_excel.jsp; Line: 4]
    Test.writeExcel(response.getOutputStream()); //[ /test_excel.jsp; Line: 5]
    } catch (Throwable __ee) {
    while (out != null && out != _originalOut) out = pageContext.popBody();
    ((weblogic.servlet.jsp.PageContextImpl)pageContext).handlePageException((Throwable)__ee);
    }

    //before final close brace...
    }

    大家可以看到在response.reset();之后,Test.writeExcel(response.getOutputStream());之前正確的設(shè)置了response的輸出內(nèi)容。所以輸出就正常了。
    posted on 2006-05-16 17:22 kelven 閱讀(621) 評(píng)論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲日本乱码一区二区在线二产线| 亚洲情A成黄在线观看动漫软件| 一区二区三区福利视频免费观看| 久久亚洲精品无码VA大香大香| 在线观看人成网站深夜免费| 国产精品免费一区二区三区| 亚洲国产亚洲片在线观看播放| 日本免费人成视频播放| 最近的2019免费中文字幕| 亚洲乱码中文字幕小综合| 狠狠色婷婷狠狠狠亚洲综合| 日本片免费观看一区二区| 免费夜色污私人影院网站电影| 亚洲精品中文字幕无乱码| 亚洲精品无码日韩国产不卡?V| 精品女同一区二区三区免费站| 日韩久久无码免费毛片软件| 亚洲一级高清在线中文字幕| 综合亚洲伊人午夜网 | 亚洲综合精品香蕉久久网97| 色视频色露露永久免费观看| 久久综合给合久久国产免费| 老司机福利在线免费观看| 91亚洲精品麻豆| 国产亚洲人成网站观看| 免费国产高清视频| 国产大片线上免费观看| 精品国产免费一区二区三区香蕉| 国产亚洲高清在线精品不卡| 亚洲国产成人精品电影| 亚洲成AV人片在线播放无码| 亚洲国产综合无码一区二区二三区| 黄页网站免费在线观看| 日韩精品人妻系列无码专区免费| free哆拍拍免费永久视频 | 久久久久久久99精品免费| 免费国产va视频永久在线观看| 最新亚洲春色Av无码专区| 亚洲精品国产成人中文| 日本亚洲成高清一区二区三区 | 亚洲av无码成人精品区在线播放|