最近在做基于DWZ框架的项目,碰到的数据导入导出的问题,现在问题解决了,源码如下
//前台代码
<div class="pageContent">
<form method="post" action="Export/ClassExport.aspx">此处必须注意: <%-- class="pageForm required-validate" οnsubmit="return validateCallback(this,navTabAjaxDone);" --%> form表单中的这些代码必须删除!
<div class="pageFormContent" layoutH="56">
<div>
<label>请选择考试名称:</label>
<asp:Literal ID="literexamname" runat="server"></asp:Literal>
</div>
<div class="divider">divider</div>
<div>
<label>请选择科目:</label>
<select name="selexamsub" id="type">
<asp:Literal ID="litersub" runat="server"></asp:Literal>
</select>
</div>
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">生成</button></div></div></li>
<li>
<div class="button"><div class="buttonContent"><button class="close" value="取消">取消</button></div></div>
</li>
</ul>
</div>
</div>
</form>
</div>
//后台代码
protected void Page_Load(object sender, EventArgs e) { string classid = Session["classid"].ToString(); string examname = Request.Form["selexamname"].ToString(); string subname = Request.Form["selexamsub"].ToString(); DataSet ds = scorebll.DataExport(examname, subname, Convert.ToInt32(classid)); //读取后台数据库中的数据到dataset CreateExcel(ds, "1", "stu"); } /// /// 创建数据导入模版 /// /// 数据源 /// 类别 /// 文件名 public void CreateExcel(DataSet ds, string typeid, string FileName) { HttpResponse resp; resp = Page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.ContentType = "application/ms-excel"; resp.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls"); this.EnableViewState = false; string colHeaders = "", Is_item = ""; int i = 0; //定义表对象与行对象,同时对dataset进行初始化 DataTable dt = ds.Tables[0]; DataRow[] myRow = dt.Select(""); //typeid=="1"时导出为Excel格式文件;typeid=="2"时导出为XML文件 if (typeid == "1") { //取得数据表各列标题,标题之间以\t分割,最后一个列标题后加回车符 for (i = 0; i < dt.Columns.Count; i++) { colHeaders += dt.Columns[i].Caption.ToString() + "\t"; } colHeaders += "\n"; resp.Write(colHeaders); //逐行处理数据 foreach (DataRow row in myRow) { //在当前行中,逐列取得数据,数据之间以\t分割,结束时加回车符\n for (i = 0; i < dt.Columns.Count; i++) { Is_item += row[i].ToString() + "\t"; } Is_item += "\n"; resp.Write(Is_item); Is_item = ""; } } else { if (typeid == "2") { //从DataSet中直接导出XML数据并且写到HTTP输出流中 resp.Write(ds.GetXml()); } } //写缓冲区中的数据到HTTP头文件中 resp.End(); }今天就先到这里,数据在excel导入数据库明天再贴出来!~