要把Excel文件格式显示在客户端,首先使用Response对象设置HTTP输出流的内容格式为Excel,并对HTTP流进行操作。
然后使用StringWriter类的对象初始化HtmlTextWriter对象,来初始化DataGrid控件呈现给客户端的HTML内容
公共属性
名称 | 说明 | |
---|---|---|
Buffer | 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个响应之后将其发送。 | |
BufferOutput | 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送。 | |
Cache | 获取网页的缓存策略(过期时间、保密性、变化子句)。 | |
CacheControl | 将 Cache-Control HTTP 头设置为 Public 或 Private。 | |
Charset | 获取或设置输出流的 HTTP 字符集。 | |
ContentEncoding | 获取或设置输出流的 HTTP 字符集。 | |
ContentType | 获取或设置输出流的 HTTP MIME 类型。 | |
Cookies | 获取响应 Cookie 集合。 | |
Expires | 获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页面过期之前返回该页,则显示缓存版本。提供 Expires 是为了与以前版本的 ASP 兼容。 | |
ExpiresAbsolute | 获取或设置从缓存中移除缓存信息的绝对日期和时间。提供 ExpiresAbsolute 是为了与以前版本的 ASP 兼容。 | |
Filter | 获取或设置一个包装筛选器对象,该对象用于在传输之前修改 HTTP 实体主体。 | |
HeaderEncoding | 获取或设置一个 Encoding 对象,该对象表示当前标头输出流的编码。 | |
IsClientConnected | 获取一个值,通过该值指示客户端是否仍连接在服务器上。 | |
IsRequestBeingRedirected | 获取一个布尔值,该值指示客户端是否正在被传输到新的位置。 | |
Output | 启用到输出 HTTP 响应流的文本输出。 | |
OutputStream | 启用到输出 Http 内容主体的二进制输出。 | |
RedirectLocation | 获取或设置 Http“位置”标头的值。 | |
Status | 设置返回到客户端的 Status 栏。 | |
StatusCode | 获取或设置返回给客户端的输出的 HTTP 状态代码。 | |
StatusDescription | 获取或设置返回给客户端的输出的 HTTP 状态字符串。 | |
SuppressContent | 获取或设置一个值,该值指示是否将 HTTP 内容发送到客户端。 |
公共方法
(请参见 受保护的方法 )
名称 | 说明 | |
---|---|---|
AddCacheDependency | 将一组缓存依赖项与响应关联,这样,如果响应存储在输出缓存中并且指定的依赖项发生变化,就可以使该响应失效。 | |
AddCacheItemDependencies | 已重载。 使缓存响应的有效性依赖于缓存中的其他项。 | |
AddCacheItemDependency | 使缓存响应的有效性依赖于缓存中的其他项。 | |
AddFileDependencies | 已重载。 使缓存响应的有效性依赖于缓存中的其他项。 | |
AddFileDependency | 将单个文件名添加到文件名集合中,当前响应依赖于该集合。 | |
AddHeader | 将一个 HTTP 头添加到输出流。提供 AddHeader 是为了与以前版本的 ASP 兼容。 | |
AppendCookie | 将一个 HTTP Cookie 添加到内部 Cookie 集合。 | |
AppendHeader | 将 HTTP 头添加到输出流。 | |
AppendToLog | 将自定义日志信息添加到 Internet 信息服务 (IIS) 日志文件。 | |
ApplyAppPathModifier | 如果会话使用 Cookieless 会话状态,则将该会话 ID 添加到虚拟路径中,并返回组合路径。如果不使用 Cookieless 会话状态,则 ApplyAppPathModifier 返回原始的虚拟路径。 | |
BinaryWrite | 将一个二进制字符串写入 HTTP 输出流。 | |
Clear | 清除缓冲区流中的所有内容输出。 | |
ClearContent | 清除缓冲区流中的所有内容输出。 | |
ClearHeaders | 清除缓冲区流中的所有头。 | |
Close | 关闭到客户端的套接字连接。 | |
End | 将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 EndRequest 事件。 | |
Equals | 已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。) | |
Flush | 向客户端发送当前所有缓冲的输出。 | |
GetHashCode | 用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。) | |
GetType | 获取当前实例的 Type。 (从 Object 继承。) | |
Pics | 将一个 PICS-Label HTTP 标头追加到输出流。 | |
Redirect | 已重载。 将客户端重定向到新的 URL。 | |
ReferenceEquals | 确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。) | |
RemoveOutputCacheItem | 静态方法从缓存中移除所有与指定路径关联的缓存项。 | |
SetCookie | 更新 Cookie 集合中的一个现有 Cookie。 | |
ToString | 返回表示当前 Object 的 String。 (从 Object 继承。) | |
TransmitFile | 将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。 | |
Write | 已重载。 将信息写入 HTTP 响应输出流。 | |
WriteFile | 已重载。 将指定的文件直接写入 HTTP 响应输出流。 | |
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 >
< 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();
}
}
{
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();
}
}