数据导出


数据导出和数据导入刚好是相反的,把逻辑反过来就可以了。

源码:https://github.com/SeaLee02/FunctionModule/blob/master/UploadFiles/WebDemo/COM/DataToOut.aspx

效果:

 

然后勾选需要导出的数据,生成Excel

 

 部分前台:

 <div style="margin-left: 100px;">
           <asp:LinkButton CssClass="add" ID="lnkData" runat="server" OnClientClick="return Test()" OnClick="lnkData_Click">导出<br />
                数据</asp:LinkButton>
           <asp:HiddenField ID="hfID" runat="server" />  //赋值选择了需要导出数据的ID
        </div>

 

 JS:

   //全选/不全选
            $("#checkAll").click(function () {
                var f = $("#checkAll").is(":checked")
                if (f) {
                    $("input[name=chk]:checkbox").prop("checked", true);
                } else {
                    $("input[name=chk]:checkbox").prop("checked", false);
                }
            });

            //单选
            var d = $("input[name=chk]:checkbox").length;
            $("input[name=chk]:checkbox").click(function () {
                var dd = $("input[name=chk]:checked").length;
                if (parseInt(d) === parseInt(dd)) {
                    $("#checkAll").prop("checked", true);
                } else {
                    $("#checkAll").prop("checked", false);
                }
            });

            //取值
            function Test() {             
                var ids = "";            
                var dd = $("input[name=chk]:checked");               
                dd.each(function () {
                        ids += $(this).val() + ",";                       
                });
                if (ids=="") {
                    alert("请选择导入的数据");
                    return false;
                }
                ids = ids.substring(0, ids.length - 1);
                $("#hfID").val(ids);
                return true;
            };

 

 后台导出数据的代码:

 Aspose.Cells 需要从外面引入的

 

  protected void lnkData_Click(object sender, EventArgs e)
        {
            DataTable ds = new FunctionDemo.BLL.DataToLead().GetList(" ID in (" + hfID.Value + ")").Tables[0];
            if (ds.Rows.Count > 0)
            {
                //创建一个excel表格
                Workbook workbook = new Workbook();
                Worksheet sheet = workbook.Worksheets[0] as Worksheet; //工作薄
                Cells cells = sheet.Cells;//取到所有的列
                //然后往cell里面插入数据  
                sheet.FreezePanes(1, 1, 1, 0);//冻结第一行
//插入头部 cells[0, 0].PutValue("姓名"); cells[0, 1].PutValue("性别"); cells[0, 2].PutValue("年龄"); cells[0, 3].PutValue("电话号码"); cells[0, 4].PutValue("标记"); Aspose.Cells.Style style1 = workbook.Styles[workbook.Styles.Add()]; //设置样式 然后进行设置 style1.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;//居中 //列宽 cells.SetColumnWidth(0, 20); cells.SetColumnWidth(1, 20); cells.SetColumnWidth(2, 20); cells.SetColumnWidth(3, 50); cells.SetColumnWidth(4, 20); for (int i = 0; i < ds.Rows.Count; i++) { cells.SetRowHeight(i, 20); //行高 //赋值和样式 cells[1 + i,0].PutValue(ds.Rows[i]["Name"].ToString()); cells[1 + i,0].SetStyle(style1);
cells[
1 + i,1].PutValue(ds.Rows[i]["Sex"].ToString()); cells[1 + i,1].SetStyle(style1);
cells[
1 + i,2].PutValue(ds.Rows[i]["Age"].ToString()); cells[1 + i,2].SetStyle(style1);
cells[
1 + i,3].PutValue(ds.Rows[i]["Tel"].ToString()); cells[1 + i,3].SetStyle(style1);
cells[
1 + i,4].PutValue(ds.Rows[i]["Remark"].ToString()); cells[1 + i,4].SetStyle(style1); } Aspose.Cells.Style style = workbook.Styles[workbook.Styles.Add()]; //设置样式 style.HorizontalAlignment = TextAlignmentType.Center;//居中 style.ForegroundColor = System.Drawing.Color.Khaki;//背景样式 style.Pattern = BackgroundType.Solid; //枚举类型 模式 实线

cells[0,0].SetStyle(style); //第一行设计样式 头 cells[0, 1].SetStyle(style); cells[0, 2].SetStyle(style); cells[0, 3].SetStyle(style); cells[0, 4].SetStyle(style);
System.IO.MemoryStream ms
= workbook.SaveToStream();//生成流 byte[] by = ms.ToArray();//生成字节好下载 string fileName = "导出数据" + DateTime.Now.ToString("yyyyMMddHHmmss")+".xls";//文件名 Response.ContentType = "application/octet-stream";//文件下载 //以字节流形式下载excel 上面下面两种类型都可以 //Response.ContentType = "application/vnd.ms-excel"; //编码 Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)); Response.BinaryWrite(by); Response.Flush(); Response.End(); } }

 

合并单元格     使用   cells.Merge()方法就可以完成

 

   

 

 

 

 

posted @ 2017-06-28 14:00  Sealee  阅读(279)  评论(0编辑  收藏  举报