c# 把页面数据导到excel


A.aspx




导出自建题库


AutoGenerateColumns="False" Width="98%" CssClass="gridview" OnItemDataBound="dgExport_ItemDataBound">








<%#Eval("DecryptExamContent1")%>









<%#Eval("Truesolu")%>





A.aspx.cs后台代码


public partial class exportExam : System.Web.UI.Page
{
protected OESM.Web.common.baseclass.Examination Examination = new OESM.Web.common.baseclass.Examination();
protected void Page_Load(object sender, EventArgs e)
{
//导出'新--本院题库','本院题库','自建题库'这几个科目的题库
string sql = @"with cte_child(subjectid,subjectname,subjectpid,level)
as
(
--起始条件
select subjectid,subjectname,subjectpid,0 as level from tblsubject
where subjectid in ('3201 ','3229 ','3683 ') -- 优先列出第一节点查询条件

union all

--递归条件
select a.subjectid,a.subjectname,a.subjectpid,b.level+1
from tblsubject a
inner join
cte_child b
on ( a.subjectpid=b.subjectid)
)
select * from Tblexam where Examsubject in(select subjectid from cte_child)";
DataTable dt = SqlHelper.Table(sql);
List eList = Entity.ConvertDBDataToList(dt);
foreach (Exam exam in eList)
{
Examination.DecryptExam(exam, true);
}
dgExport.DataSource = eList;
dgExport.DataBind();

//导出数据
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.Write("");
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes("自建题库" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls")));
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.Default;
EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

dgExport.Visible = true;
dgExport.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
dgExport.Visible = false;
}
protected void dgExport_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.EditItem)
{
Label lblsubjectname = e.Item.Controls[0].FindControl("lblsubjectname") as Label;
Label lblOptions = e.Item.Controls[0].FindControl("lblOptions") as Label;
Exam exam = e.Item.DataItem as Exam;
Regex regex = new Regex("@@");
string examsoluoption = "";
string[] ExamSolus = regex.Split(exam.ExamSolu);
for (int i = 0; i < ExamSolus.Length; i++)
{
examsoluoption += ((char)(i + 65)).ToString() + " ";
examsoluoption += ExamSolus[i] + " \r\n";
}
lblOptions.Text = examsoluoption;

string sql = string.Format(@"with cte_child(subjectid,subjectname,subjectpid,level)
as
(
--起始条件
select subjectid,subjectname,subjectpid,0 as level from tblsubject
where subjectid='{0}'
union all
--递归条件
select a.subjectid,a.subjectname,a.subjectpid,b.level+1
from tblsubject a
inner join
cte_child b
on ( a.subjectid=b.subjectpid)
)
select stuff((
select '--'+subjectname
from cte_child order by level desc for xml path('')),1,0,'') as subjectname ;
", exam.ExamSubject);
lblsubjectname.Text = SqlHelper.Table(sql).Rows[0]["subjectname"].ToString();
}
}
}

C