请教!如何形成邮件,急,在线等! 我想从数据库中查出数据形成exel表格,形成附件发送,请问代码应该如何写,谢谢,在线等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【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 % 敬礼! 发该邮件的事件触发------到数据库取对应的数据-----生成需要的excel文件(可以有个excel模板被调用)---将ecel当做附件发送到指定的信箱----结束 我以前看过一本书,好象是《JSP应用开发详解》 飞思科技产品研发中心编著,参考里面的例子,可以写EMAIL文件,但是是否有带附件的,我也忘了。 你先生成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; }} 生成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] 来看看这段代码为什么不能执行 InputStream/FileInputStream可以多次read并且得到完整的数据吗? java支持双核CPU吗? swt中动态加载图片的问题。 java能不能像vc一样能够在函数中修改参数值? 如何学好JAVA语言!? 哥哥姐姐好!愚弟问个不知深浅的问题 一个关于event.getActionCommand 的问题。 【新手求助】关于GUI! 很简单的一个例子,但是就是无法输出到命令行。这是为什么? 为什么是true~~?? RTTI和反射问题
楼主【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 %
敬礼!
参考里面的例子,可以写EMAIL文件,但是是否有带附件的,我也忘了。
[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;
}
}
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]