Aspx中的列表数据的导出

☻ 列表页面中的导出按钮HTML代码

<div class="span6">

        <!--操作-->

        <div class="pull-right">

            <asp:LinkButton ID="lbExport" runat="server" OnClick="lbExport_Click">

                <span>

                    <img alt="" runat="server" id="img1" src="../../Statics/images/icon_tool_101.gif"

                        style="border: 0px" />导出 </span>

            </asp:LinkButton>

        </div>

    </div>

☻导出Excel文件的抽象类 AbstractExecl.cs              ——注意需要引入    using Bingosoft.Excel 命名空间;

 

public abstract class AbstractExecl

    {

        public DataTable exceldsource;  //查询数据库所得到的数据

        public string mappath;  //Excel文件模板路径

        public string sheetname; //Excel文件的工作薄sheet页

        public int rowstarindex; //写入Excel文件的从哪行开始

        public AbstractExecl()

        {

 

        }

        public AbstractExecl(DataTable _exceldsource, string _mappath, string _sheetname, int _rowstarindex)

        {

            exceldsource = _exceldsource;

            mappath = _mappath;

            sheetname = _sheetname;

            rowstarindex = _rowstarindex;

        }

        public virtual MemoryStream BuildExcel()

        {

            MemoryStream memorystream = new MemoryStream();

            ExcelFile exFile = new ExcelFile();

            exFile.LoadXls(mappath);

            int cellindex = 0;

            string value = string.Empty;

            ExcelWorksheet eWorkSheet = exFile.Worksheets[sheetname];

 

            for (int i = 0; i < exceldsource.Rows.Count; i++)

            {

                for (int j = 0; j < exceldsource.Columns.Count; j++)

                {

                    cellindex = j;

                    value = Convert.ToString(exceldsource.Rows[i][j]);

                    if (!string.IsNullOrEmpty(value))

                    {

                        eWorkSheet.Rows[rowstarindex].Cells[cellindex].Value = value;

                    }

                    eWorkSheet.Rows[rowstarindex].Cells[cellindex].Style.HorizontalAlignment = HorizontalAlignmentStyle.Left;

                    eWorkSheet.Rows[rowstarindex].Style.VerticalAlignment = VerticalAlignmentStyle.Center;

                    eWorkSheet.Rows[rowstarindex].Style.WrapText = false;

                    eWorkSheet.Rows[rowstarindex].Cells[cellindex].Style.Borders.SetBorders(MultipleBorders.Outside, System.Drawing.Color.Black, LineStyle.Thin);

                }

                rowstarindex++;

            }

            exFile.SaveXls(memorystream);

            return memorystream;

        }

 

        public virtual string ExportDataTable(System.Web.HttpResponse response, string exportexeclfilename, ref MemoryStream memorystream)

        {

            if (memorystream != null)

            {

                try

                {

                  

                                           //输出Excel

                    response.Clear(); //先是清空输出流中的其他

                    response.Charset = "UTF-8"; //指定输出编码

                    response.ContentType = "application/vnd.ms-excel"; //指定输出类型

                    string fileName = string.Format("{0}({1})", exportexeclfilename, DateTime.Now.ToString("yyyy-MM-dd"));  //指定输出的文件名

                    //给浏览器添加这样的报文头,对浏览器来说是提供下载

                    response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls\"");

                    response.BinaryWrite(memorystream.GetBuffer());  //将内存流中的数据以二进制数据输出

                    response.Flush(); //输出缓冲区中的内容

                    response.End();//输出结束

                    return null;

                }

                catch (Exception ex)

                {

                    return "导出失败,请稍候再试或请联系系统管理员!";

                }

            }

            else

            {

                return "没有可导出的数据。";

            }

        }

    }

☻导出Excel文件的子类

public class AcceptExcel: AbstractExecl

    {

        public AcceptExcel()

            : base()

        { }

        public AcceptExcel(DataTable _exceldsource, string _mappath, string _sheetname, int _rowstarindex)

            : base(_exceldsource, _mappath, _sheetname, _rowstarindex)

        {

 

        }

        public override System.IO.MemoryStream BuildExcel()

        {

            return base.BuildExcel();

        }

        public override string ExportDataTable(System.Web.HttpResponse response, string exportexeclfilename, ref System.IO.MemoryStream memorystream)

        {

            return base.ExportDataTable(response, exportexeclfilename, ref memorystream);

        }

    }

☻导出Excel文件的页面后台文件中的执行代码

public partial class AcceptList : System.Web.UI.Page

    {

        private SupAcceptService _acceptservice;

        private SupAcceptService acceptservice

        {

            get

            {

                return _acceptservice ??

                       (_acceptservice = ObjectHelper.GetObject<SupAcceptService>());

            }

        }

 

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            { }

        }

 

        protected void DeleteAccept(object sender, EventArgs e)

        {

            ImageButton img = (ImageButton)sender;

            string YWLSH = img.Attributes["_KeyId"];

            string SJBBH = img.Attributes["_SJBBH"];

            this.acceptservice.DeleteAccept(YWLSH, Convert.ToInt32(SJBBH));

            this.GridSearch.Refresh();

        }

        protected void lbExport_Click(object sender, EventArgs e)

        {

            DataTable datatable = new DataTable();

            SupAcceptService se = new SupAcceptService();

            datatable = se.GetAccept(SmartDataSource1.SelectCommand);

            datatable.Columns.Remove("BYZDA");

            datatable.Columns.Remove("BYZDB");

            datatable.Columns.Remove("BYZDC");

            datatable.Columns.Remove("BYZDD");

            datatable.AcceptChanges();

            string path = System.Web.HttpContext.Current.Server.MapPath("~\\Modules\\Excel\\受理.xls");

            MemoryStream ms = new MemoryStream();

            AcceptExcel excel = new AcceptExcel(datatable, path, "受理", 1);

            ms = excel.BuildExcel();

            string message = excel.ExportDataTable(Response, "受理", ref ms);

            ScriptHelper.Alert(this.Page, message);

        }

 

        protected void DeleteAccepts(object sender, EventArgs e)

        {

            string[] RegisterIDs = SmartGridView1.GetCheckedValues();

 

            foreach (string RegisterID in RegisterIDs)

            {

                this.acceptservice.DeleteAccept(RegisterID,0);

            }

            this.GridSearch.Refresh();

        }

 

        protected void SearchGrid(object sender, EventArgs e)

        {

            this.GridSearch.Search();

        }

 

        protected void RefreshGrid(object sender, EventArgs e)

        {

            this.GridSearch.Refresh();

        }

    }

posted @ 2013-11-26 22:56  weifb  阅读(438)  评论(0)    收藏  举报