gridview导入到Excel 导出后只有gridview以外的数据,刚好没有gridview中的数据
本帖最后由 edchen 于 2013-01-17 16:55:47 编辑 gridview导入到Excel 导出后只有gridview以外的数据,刚好没有gridview中的数据
//cs
public override void VerifyRenderingInServerForm(Control control)
{
}
protected void btnExcelError_Click(object sender, EventArgs e)
{
GridViewToExcel(RecordToolbar1);
}
public void GridViewToExcel(GridView _GridView)
{
Response.Clear();
Response.BufferOutput = true;
//设定输出的字符集
Response.Charset = "GB2312";
//假定导出的文件名为MyExcelFile.xls
Response.AppendHeader("Content-Disposition", "attachment;filename=MyExcelFile.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter stringWriter = new System.IO.StringWriter(cultureInfo);
System.Web.UI.HtmlTextWriter textWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
_GridView.RenderControl(textWriter);
//把HTML写回浏览器
Response.Write(stringWriter.ToString());
Response.End();
}
<asp:GridView ID="RecordToolbar1" runat="server" AutoGenerateColumns="False" Width="98%"gridview .net c#
Height="60px" text-align="center" CssClass="grid" EnableViewState="False">
<HeaderStyle CssClass="gridHeader" />
<PagerSettings Visible="false" />
<RowStyle CssClass="gridItem" />
<Columns>
<asp:BoundField DataField="部门" HeaderText="部门">
<ItemStyle Width="19%" HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="姓名" HeaderText="员工">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="分机号">
<ItemStyle Width="24%" />
<ItemTemplate>
<asp:TextBox ID="txtConfigInfor" ReadOnly="true" runat="server" Text='<%# Eval("ConfigInfor") %>'
Width="570"></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtConfigInfor"
CompletionSetCount="10" EnableCaching="true" MinimumPrefixLength="1" ServiceMethod="GetUseCallList"
ServicePath="~/WebService/AutoCompleteService.asmx">
</cc1:AutoCompleteExtender>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="OK" HeaderText="正确">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="why" HeaderText="错误原因">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="examTime" HeaderText="匹配时间">
<ItemStyle Width="16%" HorizontalAlign="Center" />
</asp:BoundField>
</Columns>
</asp:GridView>
protected void btnExcelError_Click(object sender, EventArgs e)
{
string strFileNames = DateTime.Now.ToShortDateString();
ToExcel(this.RecordToolbar1, strFileNames);
}
public static void ToExcel(System.Web.UI.Control col, string fname)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
//Context.Current.Response.Clear();
HttpContext.Current.Response.Charset = "gb2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7");
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + HttpUtility.UrlEncode(fname, System.Text.Encoding.UTF8) + ".xls");
col.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
col.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}