C# 导出到Excel而不导出Gridview内容
我正在尝试将gridview内容导出到Excel,如下所示,Excel已创建,但没有内容。但我可以查看网页中的内容C# 导出到Excel而不导出Gridview内容,c#,asp.net,C#,Asp.net,我正在尝试将gridview内容导出到Excel,如下所示,Excel已创建,但没有内容。但我可以查看网页中的内容 using System; using System.IO; using System.Reflection; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Xml; using System.Data; using System.Web.UI; using Syste
using System;
using System.IO;
using System.Reflection;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Xml;
using System.Data;
using System.Web.UI;
using System.Web;
namespace CustomReports.Reports
{
public partial class Reports : System.Web.UI.Page
{
DataTable ResultTable = new DataTable();
GridView ResultGrid = new GridView();
protected void Page_Load(object sender, EventArgs e)
{
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
protected void Button1_Click(object sender, EventArgs e)
{
DataColumn col1 = new DataColumn("S.No");
DataColumn col2 = new DataColumn("Workflow Name");
DataColumn col3 = new DataColumn("Subject Name");
DataColumn col4 = new DataColumn("Subject ID");
col1.DataType = System.Type.GetType("System.Int32");
col2.DataType = System.Type.GetType("System.String");
col3.DataType = System.Type.GetType("System.String");
col4.DataType = System.Type.GetType("System.String");
ResultTable.Columns.Add(col1);
ResultTable.Columns.Add(col2);
ResultTable.Columns.Add(col3);
ResultTable.Columns.Add(col4);
CoreServiceSession client = new CoreServiceSession();
SessionAwareCoreServiceClient csClient = client.GetClient();
var readoption = new ReadOptions();
ProcessesFilterData filter = new ProcessesFilterData()
{
BaseColumns = ListBaseColumns.IdAndTitle,
ProcessType = ProcessType.Historical
};
int i = 1;
foreach (IdentifiableObjectData data in csClient.GetSystemWideList(filter))
{
var processHistory = data as ProcessHistoryData;
if (processHistory != null)
{
DataRow row = ResultTable.NewRow();
row[col1] = i;
row[col2] = processHistory.Title;
foreach (var subjectdetails in processHistory.Subjects)
{
row[col3] = subjectdetails.Title.ToString();
row[col4] = subjectdetails.IdRef.ToString();
}
ResultTable.Rows.Add(row);
}
i++;
}
//GridView ResultGrid = new GridView();
ResultGrid.DataSource = ResultTable;
ResultGrid.DataBind();
Panel1.Controls.Add(ResultGrid);
}
protected void Button2_Click(object sender, EventArgs e)
{
ExporttoExcel(ResultGrid, "Reports");
}
protected void ExporttoExcel(GridView objGridView, string FileName)
{
string attachment = "attachment; filename=" + FileName + ".xls";
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "application/ms-excel";
StringWriter objStringWriter = new StringWriter();
HtmlTextWriter objHtmlTextWriter = new HtmlTextWriter(objStringWriter);
objGridView.RenderControl(objHtmlTextWriter);
HttpContext.Current.Response.Write(objStringWriter.ToString());
HttpContext.Current.Response.End();
}
}
}
Excel未从gridview导入内容,其为空
ASPX代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Reports.aspx.cs" Inherits="CustomReports.Reports.Reports" EnableEventValidation="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Custom Report Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table id="table1" runat="server">
<tr>
<td>
<asp:Label ID="CustomReports1" runat="server" Text="Custom Reports"
Font-Bold="True"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="SelectReportType2" runat="server" Text="Select Report Type"></asp:Label>
</td>
<td>
<asp:DropDownList ID="DDReportTypes" runat="server" Height="25px" Width="193px" onselectedindexchanged="DDReportTypes_SelectedIndexChanged" AutoPostBack = "true" ></asp:DropDownList>
</td>
</tr>
</table>
<table id="dynamictable" runat="server">
</table>
<table id="buttons">
<tr>
<td>
<asp:Button ID="Button1" runat="server" Text="Search" onclick="Button1_Click" />
</td>
<td>
<asp:Button ID="Button2" runat="server" Text="Export" onclick="Button2_Click" />
</td>
<td>
<asp:Button ID="Button3" runat="server" Text="GetValues" onclick="Button3_Click" />
</td>
</tr>
</table>
<asp:TextBox ID="TextBox0" runat="server" Height="28px" Width="355px"></asp:TextBox>
<asp:Panel ID="Panel1" runat="server">
<asp:GridView ID="ResultGrid" runat="server">
</asp:GridView>
</asp:Panel>
</div>
</form>
</body>
</html>
自定义报告页
您不需要表单。只需渲染网格:
ResultGrid.RenderControl(htw);
但是,您需要添加这段代码,因为通常网格必须是一个表单
public override void VerifyRenderingInServerForm(Control control)
{
}
尝试使用此代码导出
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=fooreport.xls");
Response.Charset = "";
Response.ContentType = "application/ms-excel";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
lstEarningReport.RenderControl(htmlWrite);
Response.Write("<table border='1' > ");
Response.Write(stringWrite.ToString());
Response.Write("</table>");
Response.End();
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=fooreport.xls”);
响应。Charset=“”;
Response.ContentType=“应用程序/ms excel”;
System.IO.StringWriter stringWrite=新的System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite=新的HtmlTextWriter(stringWrite);
l学习报告。渲染控制(htmlWrite);
回答。写(“”);
Response.Write(stringWrite.ToString());
回答。写(“”);
Response.End();
这是一个老问题,但当我遇到同样的问题时遇到了它<在我的案例中,代码>启用视图状态在gridview上设置为false。将其设置回true修复了该问题。在导出gridview之前,我还对其进行了数据绑定,并将其删除。我收到了以下错误:“必须将类型为“gridview”的控件“ResultGrid”放置在runat=server的表单标记中。”lsterningreport
是某个控件的名称..您应该用该控件名称替换您的控件名称…我猜它是ResultGrid
…是的,我已经这样做了。并在我的代码隐藏中添加了公共覆盖void VerifyRenderingInServerForm(Control){return;}。并在page指令中设置EnableEventValidation=“false”。现在没有错误,但Excel中没有任何错误是的,我已经这样做了。并在我的代码隐藏中添加了公共覆盖void VerifyRenderingInServerForm(Control){return;}。并在page指令中设置EnableEventValidation=“false”。现在没有错误,但Excel中没有任何内容请检查ASPX代码,我也尝试在ASPX页中声明GridView,当我在Excel中声明GridView时。@@Amiram:我已在ASPX页中声明GridView控件,在codebehind中创建数据控件,并将其添加到gridview中。但您仍然有另一个同名的gridview。这怎么可能呢?请将您的代码编辑为可编译并显示相同行为的代码。