我做的項目原來是先在服務器上生成一個excel文件,然后用jspsmartupload下載的,可是由于用jspsmartupload下載的excel文件由于編碼問題會有損壞,而且服務器的壓力也太大,所以改為在Action中生成excel文件,然后下載,方便多了。由于項目的原因,excel文件是實時生成的,對于jxl的使用,大家可以參考jxl相關的文章。
有什么問題可以和我聯系。
MSN:whw_dream(AT)hotmail.com
代碼如下:
test.jsp
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:html>
<html:button property="button" onclick="printAll()">
DownLoad
</html:button>
</html:html>
<script language='javascript'>
function printAll(){ location.href="<%=request.getContextPath()%><%=request.getContextPath()%>/download.do"; }
</script>
DownloadAction.java
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.io.OutputStream;
import test.whw.upload.ExcelBean;
/**
?* <p>Title:DownloadAction </p>
?* <p>Description: QRRSMMS </p>
?* <p>Copyright: Copyright (c) 2004 jiahansoft</p>
?* <p>Company: jiahansoft</p>
?* @author wanghw
?* @version 1.0
?*/
public class DownloadAction extends Action {
? public ActionForward execute(ActionMapping mapping,
?????????????????????????????? ActionForm form,
?????????????????????????????? HttpServletRequest request,
?????????????????????????????? HttpServletResponse response)
????? throws Exception {
??? try{
????? String fname = "test";//Excel文件名
????? OutputStream os = response.getOutputStream();//取得輸出流
????? response.reset();//清空輸出流
????? response.setHeader("Content-disposition", "attachment; filename=" + fname + ".xls");//設定輸出文件頭
????? response.setContentType("application/msexcel");//定義輸出類型
????? ExcelBean eb = new ExcelBean();
????? eb.expordExcel(os);//調用生成excel文件bean
??? }catch(Exception e){
????? System.out.println(e);
??? }
??? return mapping.findForward("display");
? }
}
ExcelBean.java
package test.whw.upload;
import java.io.*;
import jxl.*;
import jxl.write.*;
import jxl.format.*;
import java.util.*;
import java.awt.Color;
public class ExcelBean {
? public ExcelBean(){}
? public String expordExcel(OutputStream os)throws Exception{
??? jxl.write.WritableWorkbook wbook = Workbook.createWorkbook(os); //建立excel文件
??? String tmptitle = "測試文件"; //標題
??? jxl.write.WritableSheet wsheet = wbook.createSheet("第一頁", 0); //sheet名稱
??? //設置excel標題
??? jxl.write.WritableFont wfont = new jxl.write.WritableFont(
??????? WritableFont.ARIAL, 16,
??????? WritableFont.BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE,
??????? jxl.format.Colour.BLACK);
??? jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(
??????? wfont);
??? jxl.write.Label wlabel1;
??? wlabel1 = new jxl.write.Label(5, 0, tmptitle, wcfFC);
??? wsheet.addCell(wlabel1);
??? wfont = new jxl.write.WritableFont(
??????? WritableFont.ARIAL, 14,
??????? WritableFont.BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE,
??????? jxl.format.Colour.BLACK);
??? wcfFC = new jxl.write.WritableCellFormat(
??????? wfont);
??? jxl.write.Label wlabel;
??? wlabel = new jxl.write.Label(0, 0, "寫入內容");
??? wsheet.addCell(wlabel); //
??? wbook.write(); //寫入文件
??? wbook.close();
??? os.close();
??? return "success";
? }
}
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "
<struts-config>
? <action-mappings>
??? <action type="test.whw.upload.DownloadAction" path="/download">
????? <forward name="display" path="/display.jsp" />
??? </action>
? </action-mappings>
</struts-config>
<!--display.jsp是成功的提示頁面-->
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=181276