asp.net 导出Excel

        /// <summary>
        /// 导出Excel  方法1
        /// </summary>
        /// <returns></returns>
        public ActionResult ExportExcel()
        {
            List<MyEntity> listdata=new List<MyEntity>();
            //listdata = GetListData();
            DataSet ds = GetDataSetFormList(listdata);
            CreateExcelFromDatatable(ds.Tables[0], "outPutExcel.xls");
            return null;
        }

        /// <summary>
        /// 导出Excel  方法2
        /// </summary>
        /// <returns></returns>
        public ActionResult ExportExcel2()
        {
            List<MyEntity> listdata = new List<MyEntity>();
            //listdata = GetListData();
            Print(listdata,"outPutExcel2.xls");
            return null;
        }

        /// <summary>
        /// 生成DataSet
        /// </summary>
        /// <param name="listdata"></param>
        /// <returns></returns>
        private DataSet GetDataSetFormList(List<MyEntity> listdata)
        {
            DataSet ds = new DataSet();
            DataTable tmpdt = new DataTable();
            tmpdt.Columns.Add("产品编号");
            tmpdt.Columns.Add("产品售价");
            tmpdt.Columns.Add("产品名称");
            tmpdt.Columns.Add("会员价");
            tmpdt.Columns.Add("说明");
            DataRow dr;
            foreach (var item in listdata)
            {
                dr = tmpdt.NewRow();
                dr["产品编号"] = item.Id;
                dr["产品售价"] = item.SalePrice;
                dr["产品名称"] = item.Title;
                dr["会员价"] = item.VipPrice;
                dr["说明"] = item.Summary;
                tmpdt.Rows.Add(dr);
            }
            tmpdt.AcceptChanges();
            ds.Tables.Add(tmpdt);
            return ds;
        }

        /// <summary>
        /// 从数据表中导出数据到Excel
        /// </summary>
        /// <param name="table"></param>
        /// <param name="filename"></param>
        private void CreateExcelFromDatatable(DataTable table, string filename)
        {
            HttpResponse response = System.Web.HttpContext.Current.Response;

            response.Charset = "UTF-8";
            response.ContentEncoding = System.Text.Encoding.Default;
            response.ContentType = "application/vnd.ms-excel";
            response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);

            int index = 0;
            string headers = "";
            for (index = 0; index < table.Columns.Count; index++)
            {
                headers += table.Columns[index].ColumnName + "\t";
            }
            headers += "\n";
            response.Write(headers);
            response.Flush();

            foreach (DataRow row in table.Rows)
            {
                string rowcontent = "";
                foreach (DataColumn column in table.Columns)
                {
                    rowcontent += row[column.ColumnName].ToString() + "\t";
                }
                rowcontent += "\n";
                response.Write(rowcontent);
                response.Flush();
            }
            response.End();
        }

        /// <summary>
        /// 打印
        /// </summary>
        public void Print(List<MyEntity> list,string fileName)
        {
            //命名导出表格的StringBuilder变量
            StringBuilder sHtml = new StringBuilder(string.Empty);

            //打印表头
            sHtml.Append("<table border=\"1\" width=\"100%\">");
            sHtml.Append("<tr height=\"40\"><td colspan=\"5\" align=\"center\" style='font-size:24px'><b>XXXXXXX报价表" + "</b></td></tr>");

            //打印列名
            sHtml.Append("<tr height=\"20\" align=\"center\" style='background-color:#CD0000'><td>编号</td><td>商品名称</td><td>市场价</td><td>VIP价格</td><td>说明</td></tr>");

            //循环读取List集合数据
            for (int i = 0; i < list.Count; i++)
            {
                sHtml.Append("<tr height=\"20\" align=\"left\"><td style='background-color:#8DEEEE'>" + list[i].Id + "</td><td>" + list[i].Title + "</td><td style='background-color:#8DEEEE'>¥" + list[i].SalePrice + "</td><td style='color:#F00;background-color:#8DEEEE;'>¥" + list[i].VipPrice + "</td><td>" + list[i].Summary + "</td></tr>");
            }
            sHtml.Append("</table>");

            //调用输出Excel表的方法
            ExportToExcel("application/ms-excel", fileName, sHtml.ToString());
        }

        /// <summary>
        /// 输入HTTP头,然后把指定的流输出到指定的文件名,然后指定文件类型
        /// </summary>
        /// <param name="FileType"></param>
        /// <param name="FileName"></param>
        /// <param name="ExcelContent"></param>
        public void ExportToExcel(string FileType, string FileName, string ExcelContent)
        {
            System.Web.HttpContext.Current.Response.Charset = "UTF-8";
            System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
            System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
            System.Web.HttpContext.Current.Response.ContentType = FileType;
            System.Web.HttpContext.Current.Response.Output.Write(ExcelContent);
            System.Web.HttpContext.Current.Response.Flush();
            System.Web.HttpContext.Current.Response.End();
        }

        /// <summary>
        /// 数据实体
        /// </summary>
        public class MyEntity
        {
            /// <summary>
            /// 产品ID
            /// </summary>
            public string Id { get; set; }
            /// <summary>
            /// 产品名称/标题
            /// </summary>
            public string Title { get; set; }
            /// <summary>
            /// 价格
            /// </summary>
            public string SalePrice { get; set; }
            /// <summary>
            /// 会员价
            /// </summary>
            public string VipPrice { get; set; }
            /// <summary>
            /// 说明
            /// </summary>
            public string Summary { get; set; }
        }

 

posted on 2013-08-13 17:16  wboweb  阅读(1249)  评论(0编辑  收藏  举报

导航