同意楼上的 我给你一个用户控件的代码,可以将这个用户控件放在页面上,然后调用用户控件里面的方法。可以定制格式。 namespace ypmbo.modules { using System; using System.Data; using System.Drawing; using System.Web; using System.IO; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; /// <summary> /// Out2Excel 的摘要说明。 /// </summary> public abstract class module_Out2Excel : System.Web.UI.UserControl { private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); }
<script runat="server"> Dim gname As String Dim types As StringPrivate Sub ToExcel(ByVal ctl As System.Web.UI.Control) Response.Charset = "utf-8" Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8") Response.AppendHeader("Content-Disposition", "attachment;filename=" & formatdatetime(now(),2) & "_" & HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(gname)) & ".xls") Response.ContentType = "application/ms-excel" ctl.Page.EnableViewState = False Dim tw As System.IO.StringWriter = New System.IO.StringWriter() Dim hw As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(tw) ctl.RenderControl(hw) Response.Write(tw.ToString()) Response.End() End SubPrivate Function typename(typeid As Integer) As String Dim revalues As String
If types = 1 Then gname = "所有数据" Return gname ElseIf types = 2 Then gname = "当月数据" Return gname End If
sql = "select top 1 name from group_type where id=" & typeid cm = New SqlCommand(sql,conn) dr = cm.ExecuteReader() If dr.Read Then revalues = dr("name") dr.Close Else dr.Close revalues = "未知数据" End If gname = revalues Return revalues End Function </script><% types = Request("types") Dim groupid As String = Request("groupid") Dim insql As StringIf Not IsNumeric(types) Then Response.Write("exit.aspx") If IsNumeric(groupid) Then insql = " and groupid=" & groupid & " " End IfSelect Case types Case 1 sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog order by id desc" Case 2 sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog where month(addtime)=" & Month(Now()) & " order by id desc" Case 3 sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog where month(addtime)=" & Request("a_month") & " and year(addtime)=" & Request("a_year") & " and day(addtime)=" & Request("a_day") & " " & insql & " order by id desc" Case 4 sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog where addtime>='" & Request("b_year") & "-" & Request("b_month") & "-" & Request("b_day") & " ' and addtime<='" & Request("c_year") & "-" & Request("c_month") & "-" & Request("c_day") & " 23:59:59' " & insql & " order by id desc" Case Else Response.Write("exit.aspx") End Select ad = New SqlDataAdapter(sql,conn) Try ad.Fill(ds,"execl") Catch ex As Exception Response.Write("<script>alert('未有找到该时间段的数据')</script>" & ex.ToString) Response.End End Try If ds.Tables("execl").Rows.Count = 0 Then Response.Write("<script>alert('未有找到该时间的数据')</script>") Response.End End IfDim oView As New DataView(ds.Tables("execl")) DataGrid1.DataSource = oView DataGrid1.DataBind() call toexcel(datagrid1) %> <form id="Form1" method="post" runat="server"> <asp:datagrid id="DataGrid1" AutoGenerateColumns="False" CellPadding="3" runat="server" nowrap> <columns> <asp:boundcolumn headertext="发送者" datafield="senduser"/> <asp:boundcolumn headertext="接收者" datafield="sendtouser" /> <asp:boundcolumn headertext="内容" datafield="content" /> <asp:boundcolumn headertext="发送时间" datafield="addtime" /> <asp:templatecolumn> <headertemplate>发送类型</headertemplate> <itemtemplate> <%# iif(Container.DataItem("types")=true,"上行","下行") %> </itemtemplate> </asp:templatecolumn> <asp:templatecolumn> <headertemplate>组类别</headertemplate> <itemtemplate> <%# typename(Container.DataItem("groupid")) %> </itemtemplate> </asp:templatecolumn> <asp:boundcolumn headertext="操作者" datafield="username" /> </columns> </asp:datagrid> </form>
你在aspx中吧,用winform就没事了,那样要改配置
x:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG\machine.config”中的<processModel 键修改为userName="SYSTEM" password="AutoGenerate
我给你一个用户控件的代码,可以将这个用户控件放在页面上,然后调用用户控件里面的方法。可以定制格式。
namespace ypmbo.modules
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; /// <summary>
/// Out2Excel 的摘要说明。
/// </summary>
public abstract class module_Out2Excel : System.Web.UI.UserControl
{ private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// 设计器支持所需的方法 - 不要使用
/// 代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion public void Out2Excel(Object DataSource)
{
System.Web.UI.WebControls.DataGrid DataGrid2 = new System.Web.UI.WebControls.DataGrid();
DataGrid2.PagerStyle.BackColor= Color.White;
DataGrid2.PagerStyle.ForeColor=Color.Black;
DataGrid2.FooterStyle.BackColor=Color.White;
DataGrid2.FooterStyle.BorderColor=Color.White;
DataGrid2.HeaderStyle.BackColor = Color.White;
DataGrid2.HeaderStyle.ForeColor=Color.Black;
DataGrid2.ItemStyle.BackColor=Color.White;
DataGrid2.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
DataGrid2.AlternatingItemStyle.BackColor=Color.White;
DataGrid2.AlternatingItemStyle.HorizontalAlign=HorizontalAlign.Center;
DataGrid2.BorderColor=Color.Black;
DataGrid2.DataSource = DataSource;
DataGrid2.DataBind();
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
DataGrid2.Visible = true;
DataGrid2.RenderControl(hw);
Response.AddHeader("Content-Disposition", "attachment; filename=book.xls");
Response.Charset = "GB2312";
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
Response.Write(tw.ToString());
Response.End();
DataGrid2.Visible = false;
} public void Out2Excel(Object DataSource,DataGrid datagrid)
{
if (datagrid == null)
Out2Excel(DataSource);
else if (DataSource == null)
{
System.Web.UI.WebControls.DataGrid DataGrid2 = datagrid;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
DataGrid2.Visible = true;
DataGrid2.RenderControl(hw);
Response.AddHeader("Content-Disposition", "attachment; filename=book.xls");
Response.Charset = "GB2312";
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
Response.Write(tw.ToString());
Response.End();
DataGrid2.Visible = false;
}
else
{
System.Web.UI.WebControls.DataGrid DataGrid2 = datagrid;
DataGrid2.AllowPaging = false;
DataGrid2.DataSource = DataSource;
DataGrid2.DataBind();
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
DataGrid2.Visible = true;
DataGrid2.RenderControl(hw);
Response.AddHeader("Content-Disposition", "attachment; filename=book.xls");
Response.Charset = "GB2312";
Response.ContentType = "application/vnd.ms-excel";
// Response.Charset = "";
Response.Write(tw.ToString());
Response.End();
DataGrid2.Visible = false;
}
} }
}
Dim gname As String
Dim types As StringPrivate Sub ToExcel(ByVal ctl As System.Web.UI.Control)
Response.Charset = "utf-8"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8")
Response.AppendHeader("Content-Disposition", "attachment;filename=" & formatdatetime(now(),2) & "_" & HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(gname)) & ".xls")
Response.ContentType = "application/ms-excel" ctl.Page.EnableViewState = False
Dim tw As System.IO.StringWriter = New System.IO.StringWriter()
Dim hw As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(tw) ctl.RenderControl(hw) Response.Write(tw.ToString())
Response.End()
End SubPrivate Function typename(typeid As Integer) As String
Dim revalues As String
If types = 1 Then
gname = "所有数据"
Return gname
ElseIf types = 2 Then
gname = "当月数据"
Return gname
End If
sql = "select top 1 name from group_type where id=" & typeid
cm = New SqlCommand(sql,conn)
dr = cm.ExecuteReader()
If dr.Read Then
revalues = dr("name")
dr.Close
Else
dr.Close
revalues = "未知数据"
End If
gname = revalues
Return revalues
End Function
</script><%
types = Request("types")
Dim groupid As String = Request("groupid")
Dim insql As StringIf Not IsNumeric(types) Then Response.Write("exit.aspx")
If IsNumeric(groupid) Then
insql = " and groupid=" & groupid & " "
End IfSelect Case types
Case 1
sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog order by id desc"
Case 2
sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog where month(addtime)=" & Month(Now()) & " order by id desc"
Case 3
sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog where month(addtime)=" & Request("a_month") & " and year(addtime)=" & Request("a_year") & " and day(addtime)=" & Request("a_day") & " " & insql & " order by id desc"
Case 4
sql = "select username,senduser,sendtouser,content,addtime,types,groupid from smslog where addtime>='" & Request("b_year") & "-" & Request("b_month") & "-" & Request("b_day") & " ' and addtime<='" & Request("c_year") & "-" & Request("c_month") & "-" & Request("c_day") & " 23:59:59' " & insql & " order by id desc"
Case Else
Response.Write("exit.aspx")
End Select
ad = New SqlDataAdapter(sql,conn)
Try
ad.Fill(ds,"execl")
Catch ex As Exception
Response.Write("<script>alert('未有找到该时间段的数据')</script>" & ex.ToString)
Response.End
End Try
If ds.Tables("execl").Rows.Count = 0 Then
Response.Write("<script>alert('未有找到该时间的数据')</script>")
Response.End
End IfDim oView As New DataView(ds.Tables("execl"))
DataGrid1.DataSource = oView
DataGrid1.DataBind()
call toexcel(datagrid1)
%>
<form id="Form1" method="post" runat="server">
<asp:datagrid id="DataGrid1" AutoGenerateColumns="False" CellPadding="3" runat="server" nowrap>
<columns>
<asp:boundcolumn headertext="发送者" datafield="senduser"/>
<asp:boundcolumn headertext="接收者" datafield="sendtouser" />
<asp:boundcolumn headertext="内容" datafield="content" />
<asp:boundcolumn headertext="发送时间" datafield="addtime" />
<asp:templatecolumn>
<headertemplate>发送类型</headertemplate>
<itemtemplate>
<%# iif(Container.DataItem("types")=true,"上行","下行") %>
</itemtemplate>
</asp:templatecolumn>
<asp:templatecolumn>
<headertemplate>组类别</headertemplate>
<itemtemplate>
<%# typename(Container.DataItem("groupid")) %>
</itemtemplate>
</asp:templatecolumn>
<asp:boundcolumn headertext="操作者" datafield="username" />
</columns>
</asp:datagrid>
</form>