• Asp.Net下导出/导入规则的Excel(.xls)文件


    Asp.Net下导出/导入规则的Excel(.xls)文件。 DataTable中的数据导出Excel文件
    /// <summary>
    /// 将DataTable中的数据导出到指定的Excel文件中
    /// </summary>
    /// <param name="page">Web页面对象</param>
    /// <param name="tab">包含被导出数据的DataTable对象</param>
    /// <param name="FileName">Excel文件的名称</param>
    public static void Export(System.Web.UI.Page page,System.Data.DataTable tab,string FileName)
    {
    System.Web.HttpResponse httpResponse = page.Response;
    System.Web.UI.WebControls.DataGrid dataGrid=new System.Web.UI.WebControls.DataGrid();
    dataGrid.DataSource=tab.DefaultView;
    dataGrid.AllowPaging = false;
    dataGrid.HeaderStyle.BackColor = System.Drawing.Color.Green;
    dataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    dataGrid.HeaderStyle.Font.Bold = true;
    dataGrid.DataBind();
    httpResponse.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)); //filename="*.xls";
    httpResponse.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
    httpResponse.ContentType ="application/ms-Excel";
    System.IO.StringWriter tw = new System.IO.StringWriter() ;
    System.Web.UI.HTMLTextWriter hw = new System.Web.UI.HTMLTextWriter (tw);
    dataGrid.RenderControl(hw);

    string filePath = page.Server.MapPath("..")+"\\Files\\" +FileName;
    System.IO.StreamWriter sw = System.IO.File.CreateText(filePath);
    sw.Write(tw.ToString());
    sw.Close();

    DownFile(httpResponse,FileName,filePath);

    httpResponse.End();
    }
    private static bool DownFile(System.Web.HttpResponse Response,string fileName,string fullPath)
    {
    try
    {
    Response.ContentType = "application/octet-stream";

    Response.AppendHeader("Content-Disposition","attachment;filename=" +
    HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312");
    System.IO.FileStream fs= System.IO.File.OpenRead(fullPath);
    long fLen=fs.Length;
    int size=102400;//每100K同时下载数据
    byte[] readData = new byte[size];//指定缓冲区的大小
    if(size>fLen)size=Convert.ToInt32(fLen);
    long fPos=0;
    bool isEnd=false;
    while (!isEnd)
    {
    if((fPos+size)>fLen)
    {
    size=Convert.ToInt32(fLen-fPos);
    readData = new byte[size];
    isEnd=true;
    }
    fs.Read(readData, 0, size);//读入一个压缩块
    Response.BinaryWrite(readData);
    fPos+=size;
    }
    fs.Close();
    System.IO.File.Delete(fullPath);
    return true;
    }
    catch
    {
    return false;
    }
    }

    将指定Excel文件中的数据转换成DataTable
    /// <summary>
    /// 将指定Excel文件中的数据转换成DataTable对象,供应用程序进一步处理
    /// </summary>
    /// <param name="filePath"></param>
    /// <returns></returns>
    public static System.Data.DataTable Import(string filePath)
    {
    System.Data.DataTable rs = new System.Data.DataTable();
    bool canOpen=false;

    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
    "Data Source=" + filePath + ";" +
    "Extended Properties=\"Excel
  • 相关阅读:
    Math类的用法
    c#中和java中可变参数对比
    c#中泛型集合directory和java中map集合对比
    C#调用短信接口(通过简单的工厂模式整合多个短信平台)
    C#用网易邮箱发送邮件(同步异步)
    新浪云-PHP实现上传原图,缩略图
    PHP 继承,组合,单模式,GUID,等混合实例
    ASP.Net MVC @Html类
    ASP.net MVC 无法初始化 ASP.NET Simple Membership 数据库
    PHP 单列模式实例讲解以及参考网址
  • 原文地址:https://www.cnblogs.com/im/p/1264450.html
Copyright © 2020-2023  润新知