页面树结构
转至元数据结尾
转至元数据起始

 场景: 通常我们可过计划任务把电子表格导出图片以邮件的正文形式发送。

 实现思路:通过计划中的【定展】写JAVA代码实现。

 效果如下:

 

操作步骤:

1、在【定制】-》【展现定制】中创建电子表格报表。

2、在【定制】-》【计划任务】-》【任务】创建任务,【任务类型】选择:“定制”

  JAVA代码如下:

自定义任务
importPackage(Packages.smartbi.sdk.service.spreadsheetreport);
importPackage(Packages.smartbi.scheduletask.task);
importPackage(Packages.smartbi.sdk.service.systemconfig);
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.java.text);
importPackage(Packages.java.io);
importPackage(Packages.org.apache.commons.lang);
importPackage(Packages.org.apache.commons.mail);
importPackage(Packages.smartbi.scheduletask.component);
var report = null;
    //定义email对象,初始化参数
    var multiPartEmail = new SmartbiMultiPartEmail();
    var systemConfigService = new SystemConfigService(connector);
    var configList = systemConfigService.getSystemConfigs();
   
    var mailServer = null;
    var fromAddress = null;
	var userName = null;
    var password = null;
	var emailSSLEnabled = null;
    var emailTLSEnabled = null;
	var port = "";
    for (var i = 0; i < configList.size(); i++) {
        var config = configList.get(i);
            if (config!=null) {
                if (config.getKey().equals("EMAIL_SMTP_SERVER")) {
                     mailServer = config.getValue();
                } else if (config.getKey().equals("EMAIL_USER_NAME")) {
                     userName = config.getValue();
                } else if (config.getKey().equals("EMAIL_USER_ADDRESS")) {
                     fromAddress = config.getValue();
                } else if (config.getKey().equals("EMAIL_USER_PASSWORD")) {
                     password= config.getValue();
                } else if (config.getKey().equals("EMAIL_SSL_ENABLED")) {
                    if (config.getValue().equals("true")) {
                        emailSSLEnabled = true;
                    }
                } else if (config.getKey().equals("EMAIL_TLS_ENABLED")) {
                    if (config.getValue().equals("true")) {
                        emailTLSEnabled = true;
                    }
                }else if (config.getKey().equals("EMAIL_SMTP_PORT")) { 	//端口
					port = config.getValue().trim();
				}
            }
        }
 //   System.out.println(mailServer);
 //   System.out.println(fromAddress);
 //   System.out.println(password);
    multiPartEmail.setHostName(mailServer);
    multiPartEmail.setAuthentication(userName, password);
    multiPartEmail.setFrom(fromAddress);
	if(emailSSLEnabled){
        multiPartEmail.setSSL(true);
        if(port != ""){
            multiPartEmail.setSslSmtpPort(port);
        }
    }
    if(emailTLSEnabled){
        multiPartEmail.setTLS(true);
    }
    if(port != "" && !emailSSLEnabled){
        multiPartEmail.setSmtpPort(port);
    }
    multiPartEmail.addTo("21206373@qq.com");//接收邮箱地址
    //multiPartEmail.addTo("zhouyan1@smartbi.com.cn");//再添加接收邮箱地址
    multiPartEmail.setCharset("GBK");//邮件内容字符集
    multiPartEmail.setSubject("测试邮件");//邮个把标题
 
  
      report = new SSReport(connector);
      report.open("I8a87946850215270014d65ed454c1f6e"); //报表资源ID
      report.setParamValue("OutputParameter.I40282124232b5300014d503ddc0b1401.p_year_curr", "2015", "2015");//设置报表的参数默认值
      //report.open("I8a87946850215270014d65ed454c1f6e"); //第二报表资源ID
      //report.setParamValue("OutputParameter.I40282124232b5300014d503ddc0b1401.p_year_curr", "2015", "2015");//第二报表资源设置报表的参数默认值     
      var pngFile = File.createTempFile("emailtask",".png");
      var os = new FileOutputStream(pngFile);
      report.doExport("PNG","","",os,"","","");
      os.flush();
      os.close();
      report.close();
      var fileLen = pngFile.length();
     //发送邮件
      var cid = multiPartEmail.embed(pngFile);
      var sb = new StringBuffer();
      sb.append("<html><body>length:"+ fileLen  +"<img src=\"cid:"+cid+"\"></body></html>");
      sb.append("\n");        
    var html = sb.toString();
    multiPartEmail.setHtmlMsg(html);
    multiPartEmail.send();

  • 无标签