后台导出GridView到Excel,可选择要导出的列
2012-09-27 17:08
316 查看
前端的GridView不要用自动生成列,否则取不到列的资料,不知自动生成列有什么办法?
前端增加一个CheckBoxList用来显示GridView列,导出的时候选择:
后端在加载时填充CheckBoxList:
导出按钮:
导出时调用的代码见另外一篇文章:
http://blog.csdn.net/apollokk/article/details/8025611
前端增加一个CheckBoxList用来显示GridView列,导出的时候选择:
<asp:Panel ID="panel1" runat="server" Style="display: none; text-align: center; width: 500px;"> <div style="width: 500px; margin: 0 auto; border: 2px solid green; text-align: center; background-color: Silver;"> <asp:Panel ID="Panel2" runat="server"> <div class="thead" style="line-height: 30px; height: 30px; cursor:move;"> <span style="float: left; padding-left: 5px;">请选择要导出的列</span> <span style="float: right; clear: both; padding-right: 5px;"> <img src="../icon/cancel.png" onclick="document.getElementById('panel1').style.display='none';" style="vertical-align: middle; cursor:pointer;" alt="单击关闭" /> </span> </div> </asp:Panel> <asp:CheckBoxList ID="CheckBoxList1" runat="server" RepeatColumns="4" CellPadding="5" CellSpacing="0" RepeatDirection="Horizontal" Width="500px"> </asp:CheckBoxList> <asp:Button ID="Button1" runat="server" Text="确定导出" CssClass="SmallButton" Style="margin: 5px 10px 5px 10px; float: right;" OnClick="Button1_Click" /> </div> </asp:Panel> <asp:AlwaysVisibleControlExtender ID="AlwaysVisibleControlExtender1" runat="server" TargetControlID="panel1" HorizontalSide="Center" VerticalOffset="100"> </asp:AlwaysVisibleControlExtender> <asp:DragPanelExtender ID="DragPanelExtender1" runat="server" TargetControlID="panel1" DragHandleID="Panel2"> </asp:DragPanelExtender>
后端在加载时填充CheckBoxList:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { for (int i = 0; i < GridView1.Columns.Count; i++) { if(GridView1.Columns[i] is BoundField) { if (GridView1.Columns[i].Visible && GridView1.Columns[i].HeaderStyle.CssClass!="hide") { CheckBoxList1.Items.Add(new ListItem(GridView1.Columns[i].HeaderText, ((BoundField)this.GridView1.Columns[i]).DataField)); } } } for (int i = 0; i < CheckBoxList1.Items.Count; i++) { CheckBoxList1.Items[i].Selected = true; } } }
导出按钮:
protected void Button1_Click(object sender, EventArgs e) { string text = ""; string value=""; for (int i = 0; i < CheckBoxList1.Items.Count; i++) { if (CheckBoxList1.Items[i].Selected) { text += CheckBoxList1.Items[i].Text + ","; value += CheckBoxList1.Items[i].Value + ","; } } if (text != "") { text = text.Substring(0, text.Length - 1); value = value.Substring(0, value.Length - 1); string[] oldColName = value.Split(','); string[] newColName = text.Split(',');
//获取数据,代码根据需要自行编写 System.Data.DataTable dt = getData().ToTable() ; ExcelHelper.ExportByWeb(dt, date1.Text + "~" + date2.Text + "工作表标题", "文件名.xls", "工作表名称",oldColName,newColName); } }
导出时调用的代码见另外一篇文章:
http://blog.csdn.net/apollokk/article/details/8025611
相关文章推荐
- GridView导出到Excel(可选择记录条数)
- GridView导出到Excel(可选择记录条数)
- asp.net 导出 gridview 数据 excel 全部 当前页 选择行 选中行 所选行 复选框
- C# .Net 后台导出Excel方法(GridView、table或者DataTable)
- ASP.NET GridView有选择的导出Excel
- 2、 excel 导出。这种输入方式,适合后台输出,不需要打开EXCEL文件,不需要选择输出路径,只是后台自己默默的记录EXCEL文件。
- C# Excel导出后台代码
- GridView导出Excel的超好样例
- GridView导出Excel的超好例子
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
- 扩展GridView控件(8) - 导出数据源的数据为Excel、Word或Text
- java后台导出excel,客户端下载
- 扩展GridView(八)——导出为Excel
- 从gridview导出excel文件
- .net从gridview控件导出数据到excel续
- 解决gridview导出到excel中汉字出现乱码的问题
- GridView导出到Excel或Word文件
- C# 在office2007 gridview导出到excel
- GridView完美快速导出到Excel(超强)
- GridView数据导出到Excel