定时任务-asp.net定时导出Excel

问题描述

asp.net定时导出Excel

描述:最近在做一个工作流的项目,其中步骤中系统可以在每个月的十五号,三十号自动导出Excel。
附言:网上搜索到好多使用Timer并在global.asax文件中判断并执行代码的方便,我也那么做了,结果还是不可以,这里是否还有其他方法,请大家指教啦。
这是我在Global.asax文件中写的,报错了请指教一下

protected void Application_Start(object sender, EventArgs e)
    {
        #region  2014-11-10 每月十五号,三十号自动生成Excel文件

        if (System.DateTime.Today.Equals(15) || System.DateTime.Today.Equals(30))
        {
            System.Timers.Timer myTimer = new System.Timers.Timer();
            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
            myTimer.Enabled = true;
            myTimer.AutoReset = true;
        }

        #endregion
    }

    #region  2014-11-10 每月十五号,三十号自动生成Excel文件
         void myTimer_Elapsed(object source, ElapsedEventArgs e)
    {

        try
        {
            YourTask();
        }
        catch (Exception ee)
        {
        }
    }

    void YourTask()
    {
        System.Data.DataTable dtStatus = dbopimp.GetTodayDataExcel(System.DateTime.Now);
                CreateExcel(dtStatus, System.DateTime.Now.ToShortDateString());
    }
    //导出Excel
    public void CreateExcel(System.Data.DataTable dt, string FileName)
    {
        System.Data.DataTable dtname = dbopimp.GetAreaList();
        for (int j = 0; j < dtname.Rows.Count; j++)
        {
            string areaname = dtname.Rows[0]["areaname"].ToString();
            FileName = areaname + "当天数据" + FileName;

            HttpResponse resp;
            resp =Response;
            resp.AppendHeader("Content-Disposition", "attachment;filename=Excel" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString() + ".xls");
            resp.Charset = "UTF-8";
            resp.ContentEncoding = System.Text.Encoding.Default;
            resp.ContentType = "application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword

            string colHeaders = "", ls_item = "";
            int i = 0;

            //定义表对象与行对像
            DataRow[] myRow = dt.Select("");

            resp.ContentType = "application/ms-excel";
            //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            for (i = 0; i < dt.Columns.Count - 1; i++)
            {
                colHeaders += dt.Columns[i].Caption.ToString() + "t";
            }
            colHeaders += dt.Columns[i].Caption.ToString() + "n";
            //向HTTP输出流中写入取得的数据信息
            resp.Write(colHeaders);
            //逐行处理数据
            foreach (DataRow row in myRow)
            {
                //在当前行中,逐列获得数据,数据之间以t分割,结束时加回车符n
                for (i = 0; i < dt.Columns.Count - 1; i++)
                {
                    ls_item += row[i].ToString() + "t";
                }
                ls_item += row[i].ToString() + "n";
                //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
                resp.Write(ls_item);
                ls_item = "";
            }

            //写缓冲区中的数据到HTTP头文件中
            resp.End();
        }
    }
    //datagrid
    public void ToExcel(System.Web.UI.Control ctl)
    {
        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
        HttpContext.Current.Response.Charset = "UTF-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
        HttpContext.Current.Response.ContentType = "application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
        ctl.Page.EnableViewState = false;
        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        ctl.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();
    }

解决方案

虽然可以在asp.net中通过定时器处理一些任务,但是如果你工作量大,间隔时间长,建议还是放在专门的windows服务中处理。使用asp.net处理的弊端是:asp.net进程必须不断请求激活,否则会因为休眠而回收,asp.net进程处理繁重的任务会干扰正常响应同时客户端的请求,等等。

解决方案二:

写一个WINDOWS服务,发布到服务器上 设置好执行计划

不建议用ASP.NET来做这事,这不是ASP.NET干的活

时间: 2024-10-22 02:15:33

定时任务-asp.net定时导出Excel的相关文章

asp.net-小白提问:我想做一个 ASP.net 后台导出Excel 并且设置它的页眉页脚及列宽。大神有例子吗?

问题描述 小白提问:我想做一个 ASP.net 后台导出Excel 并且设置它的页眉页脚及列宽.大神有例子吗? 如图:我想做一个 ASP.net 后台导出Excel 并且设置它的页眉页脚及列宽.大神有例子吗? 解决方案 用NPOI这个类,可以设置页眉页脚,具体google下.

asp.net里导出excel表方法汇总

asp.net|excel|导出excel 1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) { HttpResponse resp; resp = Page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Di

oracle 定时任务-oracle spool定时导出数据脚本 周末无法导出 求解啊

问题描述 oracle spool定时导出数据脚本 周末无法导出 求解啊 定时任务定时每天凌晨3点导出数据,刚开始几天都正常导出,一到周天就导出个空文件了,sql测试过当天是有数据的,环境变量打印出来也是正常的,求解啊: 定时任务: #!/bin/bash . /home/unpay/etc/.profile echo "test"$DBI_CONNSTR export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" /s0

asp.net-ASP.NET导出EXCEL之后刷新页面 在线等 在线等 在线等 急急急

问题描述 ASP.NET导出EXCEL之后刷新页面 在线等 在线等 在线等 急急急 实现了excel导出之后,我想要刷新一下页面可是调用了刷新方法,方法体走了,但是页面没有变求解答 解决方案 ASP.NET,急,急,急,在线等

asp.net DataTable导出Excel自定义列名的方法_实用技巧

1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如下: using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Configuration;

asp.net datagrid 导出excel二种方法

asp教程.net datagrid 导出excel二种方法 文章为你提供二款datagrid 导出excel的代码一款是利用vb.net 导出excel一种是利用c# datagrid 导出excel的实例代码. */ //c#:   private void exporttoexcel()         {             savefiledialog savefiledialog = new savefiledialog();             savefiledialog

asp.net中导出excel数据的方法汇总

  1.由dataset生成  代码如下   public void CreateExcel(DataSet ds,string typeid,string FileName)     {     HttpResponse resp;     resp = Page.Response;     resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");     resp.AppendHeader("Co

asp.net Grid 导出Excel实现程序代码_实用技巧

1. Aspx后台代码输出Content Type信息 复制代码 代码如下: Response.ClearContent(); Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls"); Response.ContentType = "application/excel"; Response.Write(GetGridTableHtml(Gr

ASP.NET常用导出Excel方法汇总

本文转载:http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html                http://geekswithblogs.net/azamsharp/archive/2005/12/21/63843.aspx                http://forums.asp.net/t/1221467.aspx C# Excel操作类 ExcelHelper http://www.cnblogs.c