<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视频全免费网站色 | 亚洲精品无码乱码成人| 亚洲免费视频一区二区三区| 亚洲精品无码久久千人斩| 香蕉免费一区二区三区| 亚洲国产成人精品无码区在线网站| 精品香蕉在线观看免费| 亚洲国产精品自在自线观看| 成人亚洲综合天堂| 国产一级黄片儿免费看| 一级毛片免费播放视频| 中文字幕精品亚洲无线码二区 | 亚洲一区中文字幕久久| 成人免费的性色视频| 最新国产成人亚洲精品影院| 日韩视频在线免费| 成人免费777777被爆出| 亚洲宅男永久在线| 成全高清视频免费观看| 羞羞网站免费观看| 亚洲av永久无码精品国产精品| 114一级毛片免费| 国产偷国产偷亚洲高清在线| 亚洲国产精品VA在线看黑人| 黄网站色在线视频免费观看| 国产成人高清亚洲一区91| 亚洲精品国产精品乱码视色| 2020久久精品国产免费| av电影在线免费看| 亚洲理论片在线中文字幕| 日产国产精品亚洲系列| 老汉精品免费AV在线播放| 成人亚洲国产精品久久| 在线电影你懂的亚洲| 亚洲福利中文字幕在线网址| 亚洲免费福利视频| 国产免费区在线观看十分钟 |