我想从数据库中查出数据形成exel表格,形成附件发送,请问代码应该如何写,谢谢,在线等。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【hancent】截止到2008-07-10 15:58:44的历史汇总数据(不包括此帖):
    发帖的总数量:3                        发帖的总分数:90                       每贴平均分数:30                       
    回帖的总数量:31                       得分贴总数量:5                        回帖的得分率:16%                      
    结贴的总数量:3                        结贴的总分数:90                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    发该邮件的事件触发------到数据库取对应的数据-----生成需要的excel文件(可以有个excel模板被调用)---将ecel当做附件发送到指定的信箱----结束
      

  3.   

    我以前看过一本书,好象是《JSP应用开发详解》 飞思科技产品研发中心编著,
    参考里面的例子,可以写EMAIL文件,但是是否有带附件的,我也忘了。
      

  4.   

    你先生成excel,再以附件发出去啊!
    [code=Java]
    执行生成excel的action类
    /*
     * Generated by MyEclipse Struts Template path: templates/java/JavaClass.vtl
     */
    package com.yourcompany.struts.action;import java.io.IOException;
    import java.io.OutputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;import util.CreateXlsUtil;
    import util.DataBaseConn;import com.yourcompany.struts.form.SportForm;/**
     * MyEclipse Struts Creation date: 05-03-2008 XDoclet definition:
     * 
     * @struts.action validate="true"
     */
    public class CreateexcelAction extends Action
    { public ActionForward execute(ActionMapping mapping , ActionForm form ,
    HttpServletRequest request , HttpServletResponse response)
    throws ClassNotFoundException , IllegalAccessException ,
    InstantiationException , SQLException, IOException
    { response.setContentType("application/octet-stream"); // MIME type for exe
    response.setHeader("Content-disposition","attachment; filename="+"1.xls");
    response.setContentType("xls");
    List<SportForm> list = new ArrayList<SportForm>();

    // 数据库操作语句
    String sqlone = "select * from sportinfo";

    // 数据库操作
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet res = null;
    try
    {
    conn = DataBaseConn.getConn();
    pstmt = conn.prepareStatement(sqlone ,
    ResultSet.TYPE_SCROLL_INSENSITIVE ,
    ResultSet.CONCUR_READ_ONLY);
    // pstmt.setString(1 , iid);
    res = pstmt.executeQuery();
    while (res.next())
    {
    SportForm formone = new SportForm();
    formone.setClimb(res.getString("climb"));
    formone.setExerhour(res.getString("exerhour"));
    formone.setExertime(res.getString("exertime"));
    formone.setHabit(res.getString("habit"));
    formone.setHouswork(res.getString("houswork"));
    formone.setSeattime(res.getString("seattime"));
    formone.setSportid(res.getString("sportid"));
    formone.setSportname(res.getString("sportname"));
    formone.setWalktime(res.getString("walktime"));
    list.add(formone);
    }
    }
    catch (SQLException e)
    {
    e.printStackTrace();
    }
    finally
    {
    new DataBaseConn().close();
    }
    request.getSession().setAttribute("sportlist" , list);
    OutputStream ops=response.getOutputStream();
    CreateXlsUtil.downExcel(ops , list);
    return null;
    }
    }
      

  5.   

    生成excel文件的类
    package util;import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Iterator;
    import java.util.List;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;import jxl.Workbook;
    import jxl.format.Alignment;
    import jxl.format.Colour;
    import jxl.format.UnderlineStyle;
    import jxl.write.Label;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;import com.yourcompany.struts.form.SportForm;public class CreateXlsUtil {
    public static void method(HttpServletRequest request)
    throws ServletException, IOException {
    try {
    // 创建新的Excel 工作簿
    HSSFWorkbook workbook = new HSSFWorkbook();
    // 在Excel工作簿中建一工作表,其名为缺省值
    // 如要新建一名为"效益指标"的工作表,其语句为:
    // HSSFSheet sheet = workbook.createSheet("效益指标");
    HSSFSheet sheet = workbook.createSheet("SportSheet");
    List list;
    try {
    list = (List) request.getSession().getAttribute("sportlist");
    Iterator ite = list.iterator();
    int i = 0;
    HSSFRow row = sheet.createRow((short) i);
    // 创建单元格
    HSSFCell cell1 = row.createCell((short) 0);
    cell1.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell2 = row.createCell((short) 1);
    cell2.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell3 = row.createCell((short) 2);
    cell3.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell4 = row.createCell((short) 3);
    cell4.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell5 = row.createCell((short) 4);
    cell5.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell6 = row.createCell((short) 5);
    cell6.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell7 = row.createCell((short) 6);
    cell7.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell8 = row.createCell((short) 7);
    cell8.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 // 输入内容
    cell1.setCellValue("工作或日常生活中(8小时)坐着的时间");
    cell2.setCellValue("近距离(3公里以内)外出办事,您习惯的方式是");
    cell3.setCellValue("五楼以下您是否爬楼梯?");
    cell4.setCellValue("您是否从事家务劳动?");
    cell5.setCellValue("您平均每周锻炼次数");
    cell6.setCellValue("您平均每次锻炼时间");
    cell7.setCellValue("您每天步行的时间");
    cell8.setCellValue("您通常选择什么项目进行锻炼?");
    while (ite.hasNext()) {
    i++;
    // 创建行
    HSSFRow rows = sheet.createRow((short) i);
    // 创建单元格
    HSSFCell cell1s = rows.createCell((short) 0);
    cell1s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell2s = rows.createCell((short) 1);
    cell2s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell3s = rows.createCell((short) 2);
    cell3s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell4s = rows.createCell((short) 3);
    cell4s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell5s = rows.createCell((short) 4);
    cell5s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell6s = rows.createCell((short) 5);
    cell6s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell7s = rows.createCell((short) 6);
    cell7s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell cell8s = rows.createCell((short) 7);
    cell8s.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    SportForm sp = (SportForm) ite.next();
    // 输入内容
    cell1s.setCellValue(sp.getSeattime());
    cell2s.setCellValue(sp.getHabit());
    cell3s.setCellValue(sp.getClimb());
    cell4s.setCellValue(sp.getHouswork());
    cell5s.setCellValue(sp.getExertime());
    cell6s.setCellValue(sp.getExerhour());
    cell7s.setCellValue(sp.getWalktime());
    cell8s.setCellValue(sp.getSportname()); } } catch (Exception e) {
    e.printStackTrace();
    } FileOutputStream fOut = new FileOutputStream("D:\\website.xls");//excel文件路径
    // 把相应的Excel工作簿存盘
    workbook.write(fOut);
    fOut.flush(); // 操作结束,关闭流
    fOut.close(); } catch (Exception e) {
    System.out.println("已运行 xlCreate() : " + e);
    }
    } public static void downExcel(OutputStream ops, List list) {
    /** 输出的excel文件工作表名 */
    String worksheet = "运动信息导出处理";
    /** excel工作表的标题 */
    String[] title = { "工作或日常生活中(8小时)坐着的时间", "近距离(3公里以内)外出办事,您习惯的方式是", "五楼以下您是否爬楼梯?", "您是否从事家务劳动?", "您平均每周锻炼次数", "您平均每次锻炼时间",
    "您每天步行的时间", "您通常选择什么项目进行锻炼?" };
    WritableWorkbook workbook; try {
    workbook = Workbook.createWorkbook(ops); /** 添加第一个工作表 */
    WritableSheet sheet = workbook.createSheet(worksheet, 0); Label label;
    /** 标题栏格式设置 */
    /**  字体 大小 颜色*/
    WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES,
    11, WritableFont.NO_BOLD, false,
    UnderlineStyle.NO_UNDERLINE, Colour.BLUE);
    WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);
    /** 单元格居中 */
    wcfF.setAlignment(Alignment.CENTRE); for (int k = 0; k < title.length; k++) {
    Label label1 = new Label(k, 0, title[k], wcfF);
    sheet.addCell(label1);
    }
    for (int j = 0; j < list.size(); j++) {
    SportForm sp = (SportForm) list.get(j);//SprotForm是javabean String context = "";
    for (int i = 0; i < title.length; i++) {
    /** Label(列号 ,行号 ,内容) */
    switch (i) {
    case 0:
    context = sp.getSeattime().toString();
    break; case 1:
    context = sp.getHabit().toString();
    break; case 2:
    context = sp.getClimb().toString();
    break; case 3:
    context = sp.getHouswork().toString();
    break; case 4:
    context = sp.getExertime().toString();
    break;
    case 5:
    context = sp.getExerhour().toString();
    break;
    case 6:
    context = sp.getWalktime().toString();
    break;
    case 7:
    context = sp.getSportname().toString();
    break;
    } label = new Label(i, j + 1, context, wcfF); /** put the title in row1 */
    sheet.addCell(label);
    }
    } /** 关闭工作区 */
    workbook.write();
    workbook.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }[/code]