读书笔记:《Aspx开发200问》——如果把数据库中的数据以Excel文件的格式显示在浏览器中

要把Excel文件格式显示在客户端,首先使用Response对象设置HTTP输出流的内容格式为Excel,并对HTTP流进行操作。

然后使用StringWriter类的对象初始化HtmlTextWriter对象,来初始化DataGrid控件呈现给客户端的HTML内容

公共属性


  名称 说明
Public property Buffer 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个响应之后将其发送。
Public property BufferOutput 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送。
Public property Cache 获取网页的缓存策略(过期时间、保密性、变化子句)。
Public property CacheControl Cache-Control HTTP 头设置为 PublicPrivate
Public property Charset 获取或设置输出流的 HTTP 字符集。
Public property ContentEncoding 获取或设置输出流的 HTTP 字符集。
Public property ContentType 获取或设置输出流的 HTTP MIME 类型。
Public property Cookies 获取响应 Cookie 集合。
Public property Expires 获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页面过期之前返回该页,则显示缓存版本。提供 Expires 是为了与以前版本的 ASP 兼容。
Public property ExpiresAbsolute 获取或设置从缓存中移除缓存信息的绝对日期和时间。提供 ExpiresAbsolute 是为了与以前版本的 ASP 兼容。
Public property Filter 获取或设置一个包装筛选器对象,该对象用于在传输之前修改 HTTP 实体主体。
Public property HeaderEncoding 获取或设置一个 Encoding 对象,该对象表示当前标头输出流的编码。
Public property IsClientConnected 获取一个值,通过该值指示客户端是否仍连接在服务器上。
Public property IsRequestBeingRedirected 获取一个布尔值,该值指示客户端是否正在被传输到新的位置。
Public property Output 启用到输出 HTTP 响应流的文本输出。
Public property OutputStream 启用到输出 Http 内容主体的二进制输出。
Public property RedirectLocation 获取或设置 Http“位置”标头的值。
Public property Status 设置返回到客户端的 Status 栏。
Public property StatusCode 获取或设置返回给客户端的输出的 HTTP 状态代码。
Public property StatusDescription 获取或设置返回给客户端的输出的 HTTP 状态字符串。
Public property SuppressContent 获取或设置一个值,该值指示是否将 HTTP 内容发送到客户端。

公共方法


(请参见 受保护的方法
  名称 说明
Public method AddCacheDependency 将一组缓存依赖项与响应关联,这样,如果响应存储在输出缓存中并且指定的依赖项发生变化,就可以使该响应失效。
Public method AddCacheItemDependencies 已重载。 使缓存响应的有效性依赖于缓存中的其他项。
Public method AddCacheItemDependency 使缓存响应的有效性依赖于缓存中的其他项。
Public method AddFileDependencies 已重载。 使缓存响应的有效性依赖于缓存中的其他项。
Public method AddFileDependency 将单个文件名添加到文件名集合中,当前响应依赖于该集合。
Public method AddHeader 将一个 HTTP 头添加到输出流。提供 AddHeader 是为了与以前版本的 ASP 兼容。
Public method AppendCookie 将一个 HTTP Cookie 添加到内部 Cookie 集合。
Public method AppendHeader 将 HTTP 头添加到输出流。
Public method AppendToLog 将自定义日志信息添加到 Internet 信息服务 (IIS) 日志文件。
Public method ApplyAppPathModifier 如果会话使用 Cookieless 会话状态,则将该会话 ID 添加到虚拟路径中,并返回组合路径。如果不使用 Cookieless 会话状态,则 ApplyAppPathModifier 返回原始的虚拟路径。
Public method BinaryWrite 将一个二进制字符串写入 HTTP 输出流。
Public method Clear 清除缓冲区流中的所有内容输出。
Public method ClearContent 清除缓冲区流中的所有内容输出。
Public method ClearHeaders 清除缓冲区流中的所有头。
Public method Close 关闭到客户端的套接字连接。
Public method End 将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 EndRequest 事件。
Public method Equals  已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)
Public method Flush 向客户端发送当前所有缓冲的输出。
Public method GetHashCode  用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)
Public method GetType  获取当前实例的 Type。 (从 Object 继承。)
Public method Pics 将一个 PICS-Label HTTP 标头追加到输出流。
Public method Redirect 已重载。 将客户端重定向到新的 URL。
Public method Static ReferenceEquals  确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)
Public method Static RemoveOutputCacheItem 静态方法从缓存中移除所有与指定路径关联的缓存项。
Public method SetCookie 更新 Cookie 集合中的一个现有 Cookie。
Public method ToString  返回表示当前 ObjectString。 (从 Object 继承。)
Public method TransmitFile 将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。
Public method Write 已重载。 将信息写入 HTTP 响应输出流。
Public method WriteFile 已重载。 将指定的文件直接写入 HTTP 响应输出流。
Public method WriteSubstitution 允许将响应替换块插入响应,从而允许为缓存的输出响应动态生成指定的响应区域。

 

HTML:

 

<form id="excel" method="post" runat="server">
            
<TABLE id="Table1" style="Z-INDEX: 102; LEFT: 16px; WIDTH: 288px; POSITION: absolute; TOP: 16px; HEIGHT: 178px"
                cellSpacing
="1" cellPadding="1" width="288" border="0">
                
<TR>
                    
<TD>
                        
<asp:datagrid id="dgExcel" runat="server" Font-Names="宋体" Font-Size="9pt" Height="100%" Width="100%"
                            BorderStyle
="None" BorderWidth="1px" BorderColor="#CC9966" BackColor="White" CellPadding="4">
                            
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
                            
<AlternatingItemStyle BackColor="#FFCC99"></AlternatingItemStyle>
                            
<ItemStyle BorderWidth="2px" ForeColor="#330099" BorderStyle="Solid" BorderColor="Black" BackColor="White"></ItemStyle>
                            
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" BorderWidth="2px" ForeColor="#FFFFCC"
                                BorderStyle
="Solid" BorderColor="Black" BackColor="#990000"></HeaderStyle>
                        
</asp:datagrid></TD>
                
</TR>
                
<TR>
                    
<TD>
                        
<asp:Button id="btnGetExcel" runat="server" Text="把DataGrid中的内容以Excel显示"></asp:Button></TD>
                
</TR>
            
</TABLE>
        
</form>

 

服务端代码:

 

private void Page_Load(object sender, System.EventArgs e)
        {
            DataSet objDataset 
= new DataSet();
            SqlConnection objConn 
= new SqlConnection();
            objConn 
= new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString());
            objConn.Open();
            SqlDataAdapter objAdapter 
= new SqlDataAdapter("Select top 5 * from customers where country='USA'",objConn);
            objAdapter.Fill(objDataset);    
            DataView oView 
= new DataView(objDataset.Tables[0]);
            dgExcel.DataSource 
= oView;
            dgExcel.DataBind();
            objConn.Close();
            objConn.Dispose();
            objConn 
= null;
            
if(Request.QueryString["bExcel"== "1")
            {
                Response.ContentType 
= "application/vnd.ms-excel";
                
                Response.Charset 
= "";

                
//关闭 ViewState
                EnableViewState = false;
                System.IO.StringWriter tw 
= new System.IO.StringWriter();//将信息写入字符串
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);//在WEB窗体页上写出一系列连续的HTML特定字符和文本。
                
//此类提供ASP.NET服务器控件在将HTML内容呈现给客户端时所使用的格式化功能
                
//获取control的HTML
                dgExcel.RenderControl(hw);//将DATAGRID中的内容输出到HtmlTextWriter对象中
                
// 把HTML写回浏览器
                Response.Write(tw.ToString());
                Response.End();
            }

        }

 

posted @ 2009-07-23 11:27  宿远  阅读(280)  评论(0编辑  收藏  举报