http://dotnet.aspx.cc/ShowDetail.aspx?id=EC5E84EC-68F9-4CD7-9E11-6F5C92027F0B

解决方案 »

  1.   

    net_lover(孟子E章)的可以,就是不好控制
    你在aspx中吧,用winform就没事了,那样要改配置
      

  2.   

    我在操作IIS时遇到同样问题,在原来的版本中改
    x:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG\machine.config”中的<processModel 键修改为userName="SYSTEM"  password="AutoGenerate
      

  3.   

    你用dcomcnfg配置写权限了吗?
      

  4.   

    不需要创建Excel对象,你可以直接将DataGrid等控件中的数据导出到Excel,看看这篇文章:http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309so_l/asp200309so_l.asp
      

  5.   

    同意楼上的
    我给你一个用户控件的代码,可以将这个用户控件放在页面上,然后调用用户控件里面的方法。可以定制格式。
    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;
    }
    } }
    }
      

  6.   

    大家给个好的啊,我还有如何写文件的路径啊,用file 是打开啊。谢谢
      

  7.   

    <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>