Java 实现导出execl并发送邮件,需要导入如下包:
org.slf4j
slf4j-log4j12
1.7.12
javax.mail
mail
1.4.5
com.alibaba.druid
druid-wrapper
0.2.9
org.quartz-scheduler
quartz
2.2.1
org.quartz-scheduler
quartz-jobs
2.2.1
代码片段:
public static void main( String[] args ) throws SchedulerException
{
//初始化配置文件
Config cf=new Config();
QuartzManage mainScheduler = new QuartzManage(cf.cron1,cf.cron2);
mainScheduler.schedulerJob();
}
任务调度:
public class QuartzManage {
//from w3c
// 每次当scheduler执行job时,在调用其execute(…)方法之前会创建该类的一个新的实例;执行完毕,对该实例的引用就被丢弃了,实例会被垃圾回收;这种执行策略带来的一个后果是,job必须有一个无参的
// 构造函数(当使用默认的JobFactory时);另一个后果是,在job类中,不应该定义有状态的数据属性,因为在job的多次执行中,这些属性的值不会保留。那么如何给job实例增加属性或配置呢?如何在job的
// 多次执行中,跟踪job的状态呢?答案就是:JobDataMap,JobDetail对象的一部分。
//秒 分 时 每月第几天(?) 月 每周第几天(?) (年)
private static String CRON_EXPRESSION_WEEK;
private static String CRON_EXPRESSION_MONTH;
private static final String GROUP_NAME = "PrintJob";
public QuartzManage(String cron1,String cron2){
this.CRON_EXPRESSION_WEEK=cron1;
this.CRON_EXPRESSION_MONTH=cron2;
}
public static void schedulerJob() {
JobDetail jobDetail1 = JobBuilder.newJob(MyJobWeek.class)
.withIdentity("job1", GROUP_NAME).build();
JobDetail jobDetail2 = JobBuilder.newJob(MyJobMonth.class)
.withIdentity("job2", GROUP_NAME).build();
Trigger trigger1 = TriggerBuilder.newTrigger()
.w