<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 ,? " 我愛中國(guó) " );
    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 ,? " 中國(guó)愛我 " ,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
    主站蜘蛛池模板: 福利片免费一区二区三区| 一级视频在线免费观看| 国产午夜鲁丝片AV无码免费| 一区二区免费电影| 亚洲系列中文字幕| 国产精品成人无码免费| 日本在线免费观看| 亚洲第一成年网站视频| 亚洲精品中文字幕乱码三区| AA免费观看的1000部电影| 美女羞羞免费视频网站| 久久久久亚洲AV无码网站| 免费a在线观看播放| 免费无码一区二区三区| 国产成人高清亚洲一区久久| 亚洲精品自产拍在线观看动漫| 无码人妻精品一二三区免费| a级毛片免费在线观看| 亚洲看片无码在线视频| 亚洲色爱图小说专区| 午夜dj免费在线观看| 少妇无码一区二区三区免费| 理论片在线观看免费| www.亚洲日本| 亚洲第一福利视频| 亚洲精品国产va在线观看蜜芽| 黄色网址免费观看| a毛片免费全部播放完整成| 亚洲精品国产摄像头| 亚洲高清视频免费| 久久久久亚洲精品男人的天堂 | 亚洲欧洲免费无码| 国产麻豆一精品一AV一免费| 日日摸日日碰夜夜爽亚洲| 亚洲第一香蕉视频| 亚洲av永久无码精品漫画| 日日夜夜精品免费视频| 国产成人免费午夜在线观看| 免费精品一区二区三区第35| 人妻仑乱A级毛片免费看| 亚洲欧洲无码AV不卡在线|