动态地将表写入文件并允许通过链接下载

时间:2011-03-17 02:11:32

标签: c# asp.net html

我从数据库中将一些信息提取到表格中。任何人都可以指导我一个教程,该教程展示了如何动态创建文件并允许用户使用表格内容下载该文件。所有这些都必须是动态的。任何人都可以帮助我吗?

提前致谢:)

2 个答案:

答案 0 :(得分:0)

你可以写一个ASHX handler。在处理程序中,只需从数据库中读取数据,然后直接将其作为文本输出。

例如取自link

public class RSSHandler : IHttpHandler
{
    public void ProcessRequest (HttpContext context)
    {   
        context.Response.ContentType = "text/xml";
        context.Response.ContentEncoding = System.Text.Encoding.UTF8;

        string sXml = BuildXMLString(); 

        context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.Write( sXml );
    }

    public bool IsReusable
    {
        get { return true; }
    }
}

答案 1 :(得分:0)

使用您的数据库生成dbml文件。请参阅此文章 - http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

创建一个通用处理程序。在处理程序ProcessRequest事件中执行此操作:

public class MyData : IHttpHandler
{
    public void ProcessRequest (HttpContext context)
    {   

        context.Response.ContentType = "text/plain";
        context.Response.AddHeader("Content-Disposition", "filename=\"myData.txt\"");   

        using(var db = new DbDataContext) {

            var data = db.Table.ToList(); //add Where(), OrderBy(), etc to filter and sort your data

            string fieldDelimeter = "\t";
            foreach(var item in data) {

                context.Response.Write(item.Field1 + fieldDelimeter);
                context.Response.Write(item.Field2 + fieldDelimeter);
                context.Response.Write(item.Field3 + fieldDelimeter);
                context.Response.Write(item.Field3 + fieldDelimeter);
                context.Response.Write(Environment.NewLine);
            }
        }
    }
}