前台: <asp:Button ID="btndao" runat="server"  Text="导出excel文件" onclick="btndao_Click"></asp:Button>

。cs:
protected void btndao_Click(object sender, EventArgs e)
    {
        this.ExportExcel();
    }
    /// <summary>
    /// 导出数据到Ecxc
    /// </summary>
    private void ExportExcel()
    {
        using (aosmithnewEntities db = new aosmithnewEntities())
        {
            List<ReservationForm> formlist = db.ReservationForm.OrderBy(o => o.States).ThenByDescending(o => o.AddTime).ToList();
            string SavaFilesPath = globalVariables.Download + Guid.NewGuid() + ".xls";
            if (formlist == null || formlist.Count == 0)
            {
                throw new Exception("没有数据可导出。");
            }
            //建立一个Excel进程 Application
            Application excelApplication = new Application();             //默认值为 True。如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,请将本属性设置为 False;这样每次出现需用户应答的消息时,Microsoft Excel
            // 将选择默认应答。
            //如果将该属性设置为 False,则在代码运行结束后,Micorosoft Excel 将该属性设置为 True,除非正运行交叉处理代码。
            //如果使用工作簿的 SaveAs 方法覆盖现有文件,“覆盖”警告默认为“No”,当 DisplayAlerts 属性值设置为 True 时,Excel 选择“Yes”。
            excelApplication.DisplayAlerts = false;             //  建立或打开一个 Workbook对象生成新Workbook
            Workbook workbook = excelApplication.Workbooks.Add(Missing.Value);
            int i = 2;
            Worksheet lastWorksheet = (Worksheet)workbook.Worksheets.get_Item(workbook.Worksheets.Count);
            Worksheet newSheet = (Worksheet)workbook.Worksheets.Add(Type.Missing, lastWorksheet, Type.Missing, Type.Missing);
            newSheet.Cells[1, 1] = "产品类型";
            newSheet.Cells[1, 2] = "型号";
            newSheet.Cells[1, 3] = "安装/维保";
            newSheet.Cells[1, 4] = "问题描述";
            newSheet.Cells[1, 5] = "手机";
            newSheet.Cells[1, 6] = "其他联系方式";
            newSheet.Cells[1, 7] = "联系人姓名";
            newSheet.Cells[1, 8] = "省份";
            newSheet.Cells[1, 9] = "城市";
            newSheet.Cells[1, 10] = "城(区)县";
            newSheet.Cells[1, 11] = "详细地址";
            newSheet.Cells[1, 12] = "上门时间";
            newSheet.Cells[1, 13] = "其他要求";
            newSheet.Cells[1, 14] = "表单状态";
            ((Range)newSheet.Rows.get_Item(1)).Font.Bold = true;
            foreach (var dt in formlist)
            {
                //DateTime dtime = DateTime.Now;
                newSheet.Cells[i, 1] = dt.ProductCategoryName;
                newSheet.Cells[i, 2] = dt.Model;
                newSheet.Cells[i, 3] = dt.FormName;
                newSheet.Cells[i, 4] = dt.Description;
                newSheet.Cells[i, 5] = dt.Mobile;
                newSheet.Cells[i, 6] = dt.TelPhone;
                newSheet.Cells[i, 7] = dt.ContactsName;
                newSheet.Cells[i, 8] = dt.ProvinceName;
                newSheet.Cells[i, 9] = dt.CityName;
                newSheet.Cells[i, 10] = dt.DistrictName;
                newSheet.Cells[i, 11] = dt.Address;
                newSheet.Cells[i, 12] = dt.ServicesTime;
                newSheet.Cells[i, 13] = dt.Other;
                if (int.Parse(dt.States.ToString()) != 0)
                {
                    newSheet.Cells[i, 14] = "已处理";                 }
                else 
                {
                    newSheet.Cells[i, 14] = "未处理";
                }
                i++;
            }
            newSheet.Cells.Columns.AutoFit();
            //删除原来的空Sheet
            ((Worksheet)workbook.Worksheets.get_Item(1)).Delete();
            ((Worksheet)workbook.Worksheets.get_Item(1)).Delete();
            ((Worksheet)workbook.Worksheets.get_Item(1)).Delete();
            //设置默认选中是第一个Sheet 类似于Select();
            ((Worksheet)workbook.Worksheets.get_Item(1)).Activate();
            try
            {
                workbook.Close(true, SavaFilesPath, Missing.Value);
            }
            catch (Exception e)
            {
                throw e;
            }
            UploadExcel(SavaFilesPath, true);
            excelApplication.Quit();
        }
    }
    /// <summary>
    /// 提供下载
    /// </summary>
    /// <param name="path"></param>
    /// <param name="page"></param>
    ///  <param name="isDelete"></param>
    private static void UploadExcel(string path, bool isDelete)
    {
        FileInfo file = new FileInfo(path);
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Charset = "GB2312";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
        // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name));
        // 添加头信息,指定文件大小,让浏览器能够显示下载进度
        HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
        // 指定返回的是一个不能被客户端读取的流,必须被下载
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        // 把文件流发送到客户端
        HttpContext.Current.Response.WriteFile(file.FullName);
        HttpContext.Current.Response.Flush();
        if (isDelete)
        {
            File.Delete(path);
        }
        // 停止页面的执行
        HttpContext.Current.Response.End();     }
												

导出excel表功能的更多相关文章

  1. 传参导出Excel表乱码问题解决方法

    业务场景 先描述一下业务场景,要实现的功能是通过搜索框填写参数,然后点击按钮搜索数据,将搜索框的查询参数获取,附加在链接后面,调导Excel表接口,然后实现导出Excel功能.其实做导Excel表功能 ...

  2. thinkphp导入导出excel表单数据

    在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...

  3. 【ITOO 1】将List数据导出Excel表

    需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中.再进行判空处赋值处理,以及去重处理.这篇博客,主要介绍读取excel表和导出excel表的方法 ...

  4. ASP.NET导出excel表方法汇总

    asp.net里导出excel表方法汇总  1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...

  5. DateGridew导出Excel表+常见错误提示

    在敲机房收费系统的时候,显示数据的时候需要将DateGridew 中的数据导出进Excel表.DateGridew导出Excel表是比较常见的,当然导出Excel表有很多种方法,下面是个人认为比较容易 ...

  6. 前端导出excel表

    前端导出excel表 方式一: 前端js实现 : https://www.cnblogs.com/zhangym118/p/6235801.html 方式二: java后端实现: https://bl ...

  7. C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation

    C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...

  8. vue+element UI如何导出excel表

    导出excel表应按如下规则 首先要先安装如下依赖 npm install --save xlsx npm install --save file-saver 接下在在你的代码中去引用这两个 impo ...

  9. 微擎 人人商城 导出excel表分析

    在 数据处理上 ,有很多时候需要导出excel表  来当报表, 等 ,  php  人人商城导出报表过程简单分析 在导出时候发现 ca('statistics.order.export'); 出于好奇 ...

随机推荐

  1. java反射1

    一.Class部分 加载类的几种方式 // 1. Class clazz = Class.forName("com.wzh.test.reflect.Person"); // 2. ...

  2. DIV+CSS滑动门效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. SQL Server 2005中的分区表(五):添加一个分区(转)

    所谓天下大事,分久必合,合久必分,对于分区表而言也一样.前面我们介绍过如何删除(合并)分区表中的一个分区,下面我们介绍一下如何为分区表添加一个分区. 为分区表添加一个分区,这种情况是时常会 发生的.比 ...

  4. Servlet中读取参数的几种方式

    为每一Servlet设置初始化参数 可以为每一个Servlet在对应的web.xml中的Servlet节点下编写初始化参数,格式如下: <init-param> <param-nam ...

  5. dropdownlist 控件的判断

    问题: 三个级联 下拉框.在不点击第一级别直接点击第二级别时,弹出提示窗口."请先选择XXX"之类的,理想的结果是想要下图 这样的: 由于使用的微信公众号的内置浏览器,所以问题来了 ...

  6. POJ 3270 【组合数学】

    题意: 给长度为N的学列,然后让你通过置换来使其递增.原序列没有相同的数字. 1 ≤ N ≤ 10,000 ai<=100000 思路: 先找到循环,然后根据贪心只有两种比较好的情况,让循环里边 ...

  7. nyoj 97 兄弟郊游问题

    点击打开链接 兄弟郊游问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发.以每分钟Y米的速度去追弟弟 ...

  8. 黑马程序员_JAVA基础知识总结2

    ------- android培训.java培训.期待与您交流! ---------- IDE ---> Itegrity Development Environment Java EE --- ...

  9. Hibernate高级查询QBC条件设置——Restrictions用法 引自:http://www.cnblogs.com/evon168/archive/2010/10/29/1863059.html

    方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...

  10. CSS3 border-radius 属性和CSS outline 属性

    CSS3 border-radius 属性 border-radius 属性是一个简写属性,用于设置四个 border-*-radius 属性. 提示:该属性允许为元素添加圆角边框! 注释:按此顺序设 ...