刚刚学会的!把Datatable类型的数据导出.xls表格!

刚刚学会的!把Datatable类型的数据导出.xls表格!感觉效果还不错!虽然菜了点  但值得收藏!

<%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile
="Default.aspx.cs" Inherits="_Default" %>

<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %>

<%@ Register assembly="obout_Interface" namespace="Obout.Interface" tagprefix="cc1" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
欢迎使用 ASP.NET!
</h2>
<p>
若要了解关于 ASP.NET 的详细信息,请访问 <a href="http://www.tutupao.com/user" title="ASP.NET 网站">www.tutupao.com</a>
</p>
<p>ID:<cc1:OboutTextBox ID="text1" runat="server" ></cc1:OboutTextBox>
Number:<cc1:OboutTextBox ID="text2" runat="server"></cc1:OboutTextBox>
<br />
<cc1:OboutButton ID="OboutButton1" Text="添加到表中>>" runat="server"
onclick
="OboutButton1_Click" style="top: 0px; left: 0px">
</cc1:OboutButton>
<hr />
<cc1:OboutButton ID="OboutButton2" Text="清空datatable" runat="server"
onclick
="OboutButton2_Click">
</cc1:OboutButton>

</p>
<p>

<asp:GridView ID="GridViewone" runat="server">
</asp:GridView>

</p>
<p>
<asp:TextBox ID="name_exl" runat="server" BackColor="White"
BorderColor
="#888888" BorderStyle="Ridge" Text="起个名吧" BorderWidth="3px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" BackColor="Transparent"
BorderStyle
="Solid" BorderWidth="3px" BorderColor="#888888" Text="导出Excel"
onclick
="Button1_Click" />

</p>
<p>
您还可以找到 ttp://go.microsoft.com/fwlink/?LinkID=152368"
title="MSDN ASP.NET 文档">MSDN 上有关 ASP.NET 的文档</a>
</p>

</asp:Content>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Wuqi.Webdiyer;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{



}
/// <summary>
/// 导出excel
/// </summary>
/// <param name="ds">DataTable类型的数据集</param>
/// <param name="FileName">保存文件的默认文件名</param>
public void CreateExcel(DataTable ds, string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName+".xls");
string colHeaders = "", ls_item = "";
int i = 0;
if (ds.Rows.Count > 0)
{
DataTable dt = ds;

//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
colHeaders = "";
for (i = 0; i < dt.Columns.Count; i++)
{
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
}
colHeaders += "\n";

//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);

//逐行处理数据
foreach (DataRow row in dt.Rows)
{
ls_item += "";
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.ItemArray.Length; i++)
{
ls_item += row[i].ToString() + "\t";
}
ls_item += "\n";

}
resp.Write(ls_item);
}

//写缓冲区中的数据到HTTP头文件中
resp.End();
}

private void binGred(DataTable dt)
{
GridViewone.DataSource = dt;
GridViewone.DataBind();
}

protected void OboutButton1_Click(object sender, EventArgs e)
{
string t_id = text1.Text;
string t_num = text2.Text;
if (Application["data"] != null)
{
DataTable dt = Application["data"] as DataTable;
DataRow drt = dt.NewRow();
drt["S_id"] = t_id.ToString();
drt["S_num"] = t_num.ToString();
dt.Rows.Add(drt);
Application["data"] = dt;
binGred(dt);
}
else
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("S_id", typeof(string));
dt.Columns.Add(dc1);
DataColumn dc2 = new DataColumn("S_num", typeof(string));
dt.Columns.Add(dc2);
DataRow drow = dt.NewRow();
drow["S_id"] = t_id.ToString();
drow["S_num"] = t_num.ToString();
dt.Rows.Add(drow);
Application["data"] = dt;
binGred(dt);
}

}
protected void OboutButton2_Click(object sender, EventArgs e)
{
Application["data"] = null;
binGred(null);
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Application["data"] != null)
{
DataTable db = Application["data"] as DataTable;
CreateExcel(db,name_exl.Text);
}
}
}




posted @ 2012-01-10 17:14  若隐若现  阅读(458)  评论(1编辑  收藏  举报