RDLC报表定时导出,发送邮件[转]

定时器定时触发报表,导出Excel,PDF, 以附件形式发送

一、定时器示例代码(Global.asax文件中)

void Application_Start(object sender, EventArgs e) 
{
    
// 在应用程序启动时运行的代码
    System.Timers.Timer timer = new System.Timers.Timer(60000); // 1 * 60 * 1000毫秒的时间间隔
    timer.AutoReset = true//设置是执行一次(false)还是一直执行(true); 
    timer.Enabled = true//到达时间的时候执行事件; 

    timer.Elapsed 
+= new System.Timers.ElapsedEventHandler(timer_Elapsed);
}

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    
// 每周一早晨8:30左右,用email给固定收益部报发送周报表
    System.DateTime currentTime = DateTime.Now;
    
if (currentTime.DayOfWeek == DayOfWeek.Monday &&
        currentTime.Hour 
== 8 &&
        currentTime.Minute 
>= 30 && currentTime.Minute <= 40)
    {
        
// 生成excel文件,并用email发送
    }
}

二、使用ReportViewer,编写代码导出到excel,PDF

Warning[] Warnings;
string strMimeType;
string strEncoding;
string strFileNameExtension;
string[] strStreamIds;

FundStat fundStat 
= new FundStat(); // 基金统计
ReportViewer ReportViewer1 = new ReportViewer();
ReportDataSource datasource 
= null;
DataSet ds 
= null;

ReportViewer1.LocalReport.ReportPath 
= "c:Stat und_stat.rdlc";
ReportViewer1.LocalReport.DataSources.Clear();

ds 
= fundStat.GetHolderStruct(inFundCode, inEndDate);
datasource 
= new ReportDataSource("DSFundStat_HolderStruct", ds.Tables[0]);
ReportViewer1.LocalReport.DataSources.Add(datasource);

ReportViewer1.LocalReport.Refresh();

// 写出到excel文件
byte[] bytes = ReportViewer1.LocalReport.Render("Excel"nullout strMimeType, out strEncoding, out strFileNameExtension, out strStreamIds, out Warnings);
using (System.IO.FileStream fs = new System.IO.FileStream(arrFilePath[i], System.IO.FileMode.Create))
{
    fs.Write(bytes, 
0, bytes.Length);
}

三、Email发送示例代码(将磁盘上的excel文件作为附件发送到邮件列表)

private void SendMail()
{
    MailMessage Mess 
= new MailMessage();            //提供用于构造电子邮件的属性和方法
    Mess.From = new MailAddress("XXX@XXX.CN");    //设置发件人的email地址
    Mess.To.Add("YYY@YYY.cn");                    //设置收件人的email地址

    Mess.Subject 
= "统计数据-20080414";                //设置电子邮件的主题行
    
//Mess.IsBodyHtml = true;                        //设置电子邮件正文的内容类型
    Mess.Body = "固定收益部";                        //设置电子邮件正文的内容
    Mess.Priority = MailPriority.High;                //设置电邮的优先级。High为高,Low为低 优先级,Normal邮件具有普通优先级
    
    Attachment att 
= new Attachment("d:\fundstat_20080414.xls");
    Mess.Attachments.Add(att);                      
// 添加附件文件

    SmtpClient smtp 
= new SmtpClient("mail.jsfund.cn");
    smtp.Send(Mess);                                
//发送邮件
}

Other:

using System.Net.Mail;
private void SendMail(ReportViewer reportViewer)
{
            Warning[] warnings;
            
string[] streamids;
            
string mimeType;
            
string encoding;
            
string extension;

            
byte[] bytes = reportViewer.LocalReport.Render
        (
"Excel"nullout mimeType, out encoding, out extension, out 
        streamids, 
out warnings);

            MemoryStream memoryStream 
= new MemoryStream(bytes);
            memoryStream.Seek(
0, SeekOrigin.Begin);

            MailMessage message 
= new MailMessage();
            Attachment attachment 
= new Attachment(memoryStream,"BusinessReport.xls");
            message.Attachments.Add(attachment);

            message.From 
= new MailAddress("santosh.poojari@gmail.com");
            message.To.Add(
"santosh.poojari@gmail.com");         
           
            message.CC.Add(
"santosh.poojari@gmail.com");

            message.Subject 
= "Business Report";
            message.IsBodyHtml 
= true;

            message.Body 
= "Please find Attached Report herewith."
            
            
if (ConfigurationManager.AppSettings["SendMail"].ToString() == "Y")
            {
                SmtpClient smtp 
= new SmtpClient("SMTP Server Name");        
                smtp.Send(message);
            }
        
else
        {
        
//This is for testing.
        SmtpClient smtp = new SmtpClient();        
                smtp.Send(message);
        }

            memoryStream.Close();
            memoryStream.Dispose();
 }

 

< rsweb:ReportViewer ID="ReportViewer1" runat="server" 
    Font-Names
="Verdana" Font-Size="8pt"
                
>
                
<LocalReport ReportPath="Report.rdlc" >
                   
<DataSources >
                        
< rsweb:ReportDataSource >
                    
</DataSources >
                
</LocalReport >
            
</rsweb:ReportViewer >  

 

< system.net >
    
< mailSettings >
       
< smtp deliveryMethod="SpecifiedPickupDirectory" >
             
< specifiedPickupDirectory pickupDirectoryLocation="C:\Test\" / >
    
</smtp >
    
</mailSettings>
</system.net > 

 

posted on 2009-07-17 21:01  lwl0606  阅读(982)  评论(0编辑  收藏  举报

导航

我要啦免费统计