﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-skl</title><link>http://www.cnitblog.com/skl/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 05:58:55 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 05:58:55 GMT</pubDate><ttl>60</ttl><item><title>asp.net页面弹出对话框</title><link>http://www.cnitblog.com/skl/archive/2009/01/05/53496.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Mon, 05 Jan 2009 03:03:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2009/01/05/53496.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53496.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2009/01/05/53496.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53496.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53496.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: .net   弹出框&nbsp;&nbsp;<a href='http://www.cnitblog.com/skl/archive/2009/01/05/53496.html'>阅读全文</a><img src ="http://www.cnitblog.com/skl/aggbug/53496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2009-01-05 11:03 <a href="http://www.cnitblog.com/skl/archive/2009/01/05/53496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中删除表中的一列语句</title><link>http://www.cnitblog.com/skl/archive/2008/12/30/53259.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Tue, 30 Dec 2008 09:26:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/30/53259.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53259.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/30/53259.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53259.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53259.html</trackback:ping><description><![CDATA[<br><br>alter table 表名 drop colum 列名<br>则将该表中这一列删除包括该列的关系
<img src ="http://www.cnitblog.com/skl/aggbug/53259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-30 17:26 <a href="http://www.cnitblog.com/skl/archive/2008/12/30/53259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何让select的样式也漂亮起来</title><link>http://www.cnitblog.com/skl/archive/2008/12/29/53188.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Mon, 29 Dec 2008 04:03:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/29/53188.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53188.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/29/53188.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53188.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53188.html</trackback:ping><description><![CDATA[&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br>&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br>&lt;title&gt;如何让select的样式也漂亮起来&lt;/title&gt;<br>&lt;style type="text/css"&gt;<br>&lt;!--<br>.select * {<br>&nbsp; margin: 0;<br>&nbsp; padding: 0;<br>}<br>.select {<br>&nbsp; border:1px solid #cccccc;<br>&nbsp; float: left;<br>&nbsp; display: inline;<br>&nbsp; }<br>.select div {<br>&nbsp; border:1px solid #f9f9f9;<br>&nbsp; float: left;<br>}<br>/* 子选择器，在FF等非IE浏览器中识别 */<br>.select&gt;div {<br>&nbsp; width:120px;<br>&nbsp; height: 17px;<br>&nbsp; overflow:hidden;<br>&nbsp; }<br>&nbsp; <br>/* 通配选择符，只在IE浏览器中识别 */<br>* html .select div select {<br>&nbsp; display:block;<br>&nbsp; float: left;<br>&nbsp; margin: -2px;<br>}<br>.select div&gt;select {<br>&nbsp; display:block;<br>&nbsp; width:124px;<br>&nbsp; float:none;<br>&nbsp; margin: -2px;<br>&nbsp; padding: 0px;<br>}<br>.select:hover {<br>&nbsp; border:1px solid #666666; //鼠标移上的效果 <br>}<br>.select select&gt;option {<br>&nbsp; text-indent: 2px; //option在FF等非IE浏览器缩进2px<br>}<br>--&gt;<br>&lt;/style&gt;<br>&lt;/head&gt;<br>&lt;body&gt;&lt;div class="select"&gt;<br>&nbsp;&lt;div&gt;<br>&nbsp;&lt;select&gt;<br>&nbsp; &lt;option&gt;看见效果了吧&lt;/option&gt;<br>&nbsp; &lt;option&gt;看见效果了吧&lt;/option&gt;<br>&nbsp; &lt;option&gt;看见效果了吧&lt;/option&gt;<br>&nbsp;&lt;/select&gt;<br>&nbsp;&lt;/div&gt;<br>&lt;/div&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
<img src ="http://www.cnitblog.com/skl/aggbug/53188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-29 12:03 <a href="http://www.cnitblog.com/skl/archive/2008/12/29/53188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SELECT样式控制</title><link>http://www.cnitblog.com/skl/archive/2008/12/29/53189.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Mon, 29 Dec 2008 04:03:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/29/53189.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53189.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/29/53189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53189.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53189.html</trackback:ping><description><![CDATA[<p>&lt;style&gt;<br><span style="COLOR: #0000ff">select</span>{ <br>width:120; <br>margin:-2px; <br>} <br><span style="COLOR: #0000ff">.myselect</span>{ <br>width:118; <br>border:1px solid #000099; <br>overflow:hidden <br>} <br>&lt;/style&gt;</p>
<p><br><span style="COLOR: #ff0000">&lt;span class=myselect&gt; </span><br>&lt;select&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;option&gt;1&lt;/option&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;option&gt;2&lt;/option&gt;<br>&lt;/select&gt; <br><span style="COLOR: #ff0000">&lt;/span&gt;</span> </p>
<img src ="http://www.cnitblog.com/skl/aggbug/53189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-29 12:03 <a href="http://www.cnitblog.com/skl/archive/2008/12/29/53189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>默认图片是灰色鼠标放上去变彩色css效果代码 </title><link>http://www.cnitblog.com/skl/archive/2008/12/26/53075.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Fri, 26 Dec 2008 08:02:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/26/53075.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53075.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/26/53075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53075.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53075.html</trackback:ping><description><![CDATA[<p>&lt;style type="text/css"&gt;</p>
<p>A IMG {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILTER: gray<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>A:hover IMG {FILTER:<br>}&lt;/style&gt;&lt;a href="<a href="http://www.sincol.com%22%3e%3cimg/">http://www.sincol.com"&gt;<br>&lt;img</a> border="0" alt="" src="<a href="http://www.sincol.net/uploads/img/lanrentuku_colorpic.jpg">http://www.sincol.net/uploads/img/lanrentuku_colorpic.jpg</a>" /&gt; &lt;/a&gt;</p>
<img src ="http://www.cnitblog.com/skl/aggbug/53075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-26 16:02 <a href="http://www.cnitblog.com/skl/archive/2008/12/26/53075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>div滑动变背景</title><link>http://www.cnitblog.com/skl/archive/2008/12/26/53074.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Fri, 26 Dec 2008 07:55:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/26/53074.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53074.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/26/53074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53074.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53074.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br>&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br>&lt;title&gt;火红五月天&lt;/title&gt;<br>&lt;style type="text/css"&gt;<br>#menu ul li{<br>float:left;<br>list-style:none;<br>margin:1px;<br>}<br>a{<br>background:url(<a href="http://www.anace.cn/images/zdbs.gif">http://www.anace.cn/images/zdbs.gif</a>) no-repeat 0px 5px;&nbsp; /* 这里是背景的关键部分 */<br>text-decoration:none;<br>color:#CCCCCC;<br>font-size:100%;<br>background-color:#235F9A;<br>padding:2px 4px;<br>border-top:2px solid #666;<br>border-left:2px solid #666;<br>border-bottom:1px solid #999;<br>border-right:1px solid #999;}<br>a:hover{<br>background-color:#3276A9;<br>background:url(<a href="http://www.anace.cn/images/rss_article.gif">http://www.anace.cn/images/rss_article.gif</a>) no-repeat 0px 5px;&nbsp; /* 这里是背景的关键部分 */<br>border-bottom:2px solid #666;<br>border-right:2px solid #666;<br>border-top:1px solid #999;<br>border-left:1px solid #999;}<br>&lt;/style&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;div id="menu"&gt;<br>&lt;ul&gt;<br>&lt;li&gt;&lt;a href="＃"&gt;首页&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="＃"&gt;音乐&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="＃"&gt;分享&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="＃"&gt;有趣&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="＃"&gt;对联&lt;/a&gt;&lt;/li&gt;<br>&lt;/ul&gt;<br>&lt;/div&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
<img src ="http://www.cnitblog.com/skl/aggbug/53074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-26 15:55 <a href="http://www.cnitblog.com/skl/archive/2008/12/26/53074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Truncate,delete,drop的比较</title><link>http://www.cnitblog.com/skl/archive/2008/12/26/53062.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Fri, 26 Dec 2008 02:49:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/26/53062.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53062.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/26/53062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53062.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53062.html</trackback:ping><description><![CDATA[<p><font size=2><strong>truncate,delete,drop的比较.</strong></font></p>
<p><font size=2><br>注意:这里说的delete是指不带where子句的delete语句</font></p>
<font size=2>
<p><br><strong>相同点:</strong>truncate和不带where子句的delete, 以及drop都会删除表内的数据 </p>
<p><br><strong>不同点:</strong> <br>1. truncate和 delete只删除数据不删除表的结构(定义) <br>drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. </p>
<p><br>2.delete语句是DML,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. <br>truncate,drop是DDL, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. </p>
<p><br>3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动 <br>显然drop语句将表所占用的空间全部释放 <br>truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始). </p>
<p><br>4.速度,一般来说: drop&gt; truncate &gt; delete </p>
<p><br>5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及 <br>使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大. <br>想删除表,当然用drop <br>想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete. <br>如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据 </p>
</font>
<img src ="http://www.cnitblog.com/skl/aggbug/53062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-26 10:49 <a href="http://www.cnitblog.com/skl/archive/2008/12/26/53062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中truncate与delete的区别</title><link>http://www.cnitblog.com/skl/archive/2008/12/26/53058.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Fri, 26 Dec 2008 02:15:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/26/53058.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53058.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/26/53058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53058.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53058.html</trackback:ping><description><![CDATA[<font face="Courier New, Courier, mono" size=-1>
<div><span style="FONT-SIZE: 14pt">truncate是oracle中独有的关键字吧！它的作用是清空一个表格，在删除数据方面，其与delete有一些区别：<br></span><br><span style="COLOR: #33cccc">1、在功能上，truncate是清空一个表的内容，它相当于delete from table_name。<br>2、delete是dml操作，truncate是ddl操作；因此，用delete删除整个表的数据时，会产生大量的roolback，占用很多的rollback segments， 而truncate不会。<br>3、在内存中，用delete删除数据，表空间中其被删除数据的表占用的空间还在，便于以后的使用，另外它是&#8220;假相&#8221;的删除，相当于windows中用delete删除数据是把数据放到回收站中，还可以恢复，当然如果这个时候重新启动系统（OS或者RDBMS），它也就不能恢复了！<br>而用truncate清除数据，内存中表空间中其被删除数据的表占用的空间会被立即释放，相当于windows中用shift+delete删除数据，不能够恢复！<br>4、truncate 调整high water mark 而delete不；truncate之后，TABLE的HWM退回到 INITIAL和NEXT的位置（默认）delete 则不可以。<br>5、truncate 只能对TABLE，delete 可以是table,view,synonym。<br>6、TRUNCATE TABLE 的对象必须是本模式下的，或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的，或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限。<br>7、在外层中，truncate或者delete后，其占用的空间都将释放。<br>8、truncate和delete只删除数据，而drop则删除整个表（结构和数据）。</span></font></div>
<img src ="http://www.cnitblog.com/skl/aggbug/53058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-26 10:15 <a href="http://www.cnitblog.com/skl/archive/2008/12/26/53058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp.net 从excel 导入时 提示：不是预期的格式错误 解决方法 </title><link>http://www.cnitblog.com/skl/archive/2008/12/25/53035.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Thu, 25 Dec 2008 09:03:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/25/53035.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/53035.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/25/53035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/53035.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/53035.html</trackback:ping><description><![CDATA[最近一个项目用到excel的导入和导出，遇到了这个问题，
<p>把数据导出为excel文件后，修改部分数据，然后再导入该excel文件时就会</p>
<p>提示&#8220;不是预期的格式错误&#8221;。经过详细的排查，发现导出后的excel文件格式</p>
<p>不是真正的 Microsoft Office Excel 的文件格式，而是html的格式的excel文件，</p>
<p>大家可以通过 用记事本 打开该excel文件来验证，</p>
<p>如果打开是乱码，说明是Microsoft Office Excel 的文件格式，此格式文件导入是没有问题的。</p>
<p>如果打开是不是乱码，你就会发现是一些 html格式的代码，此时的excel文件在导入的时候就会报上边的错误。</p>
<p>然后再继续检查原因，发现如果用的是通过HttpContext.Current.Response的方式，改变ContentType的类型来输出的excel，那么导出的excel文件的格式就是html类型的excel文件。</p>
<p>如果采用excel组件的方式来导出excel文件，那么导出的excel文件的格式就是正常的可以导入的格式。</p>
<p>到此问题基本解决，希望对遇到同样问题的朋友有所帮助！</p>
<p>另：如果把导出的html格式的excel文件打开，另存为 正确的excel文件格式的话，也是可以正常导入的。</p>
<img src ="http://www.cnitblog.com/skl/aggbug/53035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-25 17:03 <a href="http://www.cnitblog.com/skl/archive/2008/12/25/53035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#将数据导出到Execl的方法</title><link>http://www.cnitblog.com/skl/archive/2008/12/19/52834.html</link><dc:creator>单</dc:creator><author>单</author><pubDate>Fri, 19 Dec 2008 06:59:00 GMT</pubDate><guid>http://www.cnitblog.com/skl/archive/2008/12/19/52834.html</guid><wfw:comment>http://www.cnitblog.com/skl/comments/52834.html</wfw:comment><comments>http://www.cnitblog.com/skl/archive/2008/12/19/52834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/skl/comments/commentRss/52834.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/skl/services/trackbacks/52834.html</trackback:ping><description><![CDATA[<div class=ArticleTitle>&nbsp;</div>
<div class=ArticleBlog>
<div class=ArticleBlogText>
<div id=ArticleBlogButtons style="MARGIN-BOTTOM: 4px" align=right>&nbsp;</div>
<div id=BlogArticleDetail style="FONT-SIZE: 14px"><span style="COLOR: rgb(255,0,0)">一、asp.net中导出Execl的方法：</span><br><br>在asp.net中导出Execl有两种方法，一种是将导出的文件存放在服务器某个文件夹下面，然后将文件地址输出在浏览器上；一种是将文件直接将文件输出流写给浏览器。在Response输出时，t分隔的数据，导出execl时，等价于分列，n等价于换行。<br><span style="COLOR: rgb(0,0,255)">1、将整个html全部输出execl</span><br><br>此法将html中所有的内容，如按钮，表格，图片等全部输出到Execl中。<br>&nbsp;&nbsp; Response.Clear();&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp; Response.Buffer=&nbsp;&nbsp; true;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp; Response.AppendHeader("Content-Disposition","attachment;filename="+DateTime.Now.ToString("yyyyMMdd")+".xls");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp; Response.ContentEncoding=System.Text.Encoding.UTF8; &nbsp;<br>&nbsp;&nbsp; Response.ContentType&nbsp;&nbsp; =&nbsp;&nbsp; "application/vnd.ms-excel"; &nbsp;<br>&nbsp;&nbsp; this.EnableViewState&nbsp;&nbsp; =&nbsp;&nbsp; false; &nbsp;<br><br><br>这里我们利用了ContentType属性，它默认的属性为text/html，这时将输出为超文本，即我们常见的网页格式到客户端，如果改为ms-excel将将输出excel格式，也就是说以电子表格的格式输出到客户端，这时浏览器将提示你下载保存。ContentType的属性还包括：image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 。同理，我们也可以输出(导出)图片、word文档等。下面的方法，也均用了这个属性。<br><br style="COLOR: rgb(0,0,255)"><span style="COLOR: rgb(0,0,255)">2、将DataGrid控件中的数据导出Execl</span><br><br>上述方法虽然实现了导出的功能，但同时把按钮、分页框等html中的所有输出信息导了进去。而我们一般要导出的是数据，DataGrid控件上的数据。<br>System.Web.UI.Control ctl=this.DataGrid1;<br>//DataGrid1是你在窗体中拖放的控件<br>HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");<br>HttpContext.Current.Response.Charset ="UTF-8";&nbsp;&nbsp; &nbsp;<br>HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;<br>HttpContext.Current.Response.ContentType ="application/ms-excel";<br>ctl.Page.EnableViewState =false;&nbsp; &nbsp;<br>System.IO.StringWriter&nbsp; tw = new System.IO.StringWriter() ;<br>System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);<br>ctl.RenderControl(hw);<br>HttpContext.Current.Response.Write(tw.ToString());<br>HttpContext.Current.Response.End();<br><br><br>如果你的DataGrid用了分页，它导出的是当前页的信息，也就是它导出的是DataGrid中显示的信息。而不是你select语句的全部信息。<br><br>为方便使用,写成方法如下：<br>public void DGToExcel(System.Web.UI.Control ctl) &nbsp;<br>&nbsp; {<br>&nbsp;&nbsp; HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");<br>&nbsp;&nbsp; HttpContext.Current.Response.Charset ="UTF-8";&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp; HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;<br>&nbsp;&nbsp; HttpContext.Current.Response.ContentType ="application/ms-excel";<br>&nbsp;&nbsp; ctl.Page.EnableViewState =false;&nbsp; &nbsp;<br>&nbsp;&nbsp; System.IO.StringWriter&nbsp; tw = new System.IO.StringWriter() ;<br>&nbsp;&nbsp; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);<br>&nbsp;&nbsp; ctl.RenderControl(hw);<br>&nbsp;&nbsp; HttpContext.Current.Response.Write(tw.ToString());<br>&nbsp;&nbsp; HttpContext.Current.Response.End();<br>&nbsp; }<br><br><br>&nbsp;&nbsp; 用法：DGToExcel(datagrid1);<br>&nbsp; <br><span style="COLOR: rgb(0,0,255)">3、将DataSet中的数据导出Execl</span><br><br>有了上边的思路，就是将在导出的信息，输出（Response）客户端，这样就可以导出了。那么把DataSet中的数据导出，也就是把DataSet中的表中的各行信息，以ms-excel的格式Response到http流，这样就OK了。说明：参数ds应为填充有数据表的DataSet，文件名是全名，包括后缀名，如execl2006.xls<br><br>public&nbsp; void CreateExcel(DataSet ds,string FileName) <br>{<br>&nbsp;HttpResponse resp;<br>&nbsp;resp = Page.Response;<br>&nbsp;resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");<br>&nbsp;resp.AppendHeader("Content-Disposition", "attachment;filename="+FileName);&nbsp; &nbsp;<br>&nbsp;string colHeaders= "", ls_item="";&nbsp; &nbsp;<br>&nbsp;<br>&nbsp;//定义表对象与行对象，同时用DataSet对其值进行初始化<br>&nbsp;DataTable dt=ds.Tables[0];<br>&nbsp;DataRow[] myRow=dt.Select();//可以类似dt.Select("id&gt;10")之形式达到数据筛选目的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int cl=dt.Columns.Count;<br>&nbsp;&nbsp; &nbsp;<br>&nbsp;//取得数据表各列标题，各标题之间以t分割，最后一个列标题后加回车符<br>&nbsp;for(i=0;i&lt;cl;i++)<br>&nbsp;{<br>&nbsp;if(i==(cl-1))//最后一列，加n<br>&nbsp;{<br>&nbsp;colHeaders +=dt.Columns[i].Caption.ToString() +"n";<br>&nbsp;}<br>&nbsp;else<br>&nbsp;{<br>&nbsp;colHeaders+=dt.Columns[i].Caption.ToString()+"t";<br>&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;}<br>&nbsp;resp.Write(colHeaders);<br>&nbsp;//向HTTP输出流中写入取得的数据信息<br>&nbsp; &nbsp;<br>&nbsp;//逐行处理数据 &nbsp;<br>&nbsp;foreach(DataRow row in myRow)<br>&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;//当前行数据写入HTTP输出流，并且置空ls_item以便下行数据&nbsp;&nbsp; &nbsp;<br>&nbsp;for(i=0;i&lt;cl;i++)<br>&nbsp;{<br>&nbsp;if(i==(cl-1))//最后一列，加n<br>&nbsp;{<br>&nbsp;ls_item +=row[i].ToString()+"n";<br>&nbsp;}<br>&nbsp;else<br>&nbsp;{<br>&nbsp;ls_item+=row[i].ToString()+"t";<br>&nbsp;}<br>&nbsp; <br>&nbsp;}<br>&nbsp;resp.Write(ls_item);<br>&nbsp;ls_item="";<br>&nbsp;&nbsp; &nbsp;<br>&nbsp;}&nbsp;&nbsp; &nbsp;<br>&nbsp;resp.End(); <br>&nbsp;}<br><br><br><span style="COLOR: rgb(0,0,255)">4、将dataview导出execl</span><br>若想实现更加富于变化或者行列不规则的execl导出时，可用本法。<br>public void OutputExcel(DataView dv,string str)<br>{<br>&nbsp;&nbsp; //dv为要输出到Excel的数据，str为标题名称<br>&nbsp;&nbsp; GC.Collect();<br>&nbsp;&nbsp; Application excel;// = new Application();<br>&nbsp;&nbsp; int rowIndex=4;<br>&nbsp;&nbsp; int colIndex=1;<br>&nbsp;<br>&nbsp;&nbsp; _Workbook xBk;<br>&nbsp;&nbsp; _Worksheet xSt;<br>&nbsp;<br>&nbsp;&nbsp; excel= new ApplicationClass();<br>&nbsp; <br>&nbsp;&nbsp; xBk = excel.Workbooks.Add(true);<br>&nbsp; &nbsp;<br>&nbsp;&nbsp; xSt = (_Worksheet)xBk.ActiveSheet;<br>&nbsp;<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //取得标题<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; foreach(DataColumn col in dv.Table.Columns)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; colIndex++;<br>&nbsp;&nbsp;&nbsp; excel.Cells[4,colIndex] = col.ColumnName;<br>&nbsp;&nbsp;&nbsp; xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐<br>&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //取得表格中的数据<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; foreach(DataRowView row in dv)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; rowIndex ++;<br>&nbsp;&nbsp;&nbsp; colIndex = 1;<br>&nbsp;&nbsp;&nbsp; foreach(DataColumn col in dv.Table.Columns)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; colIndex ++;<br>&nbsp;&nbsp;&nbsp;&nbsp; if(col.DataType == System.Type.GetType("System.DateTime"))<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(col.DataType == System.Type.GetType("System.String"))<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //加载一个合计行<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; int rowSum = rowIndex + 1;<br>&nbsp;&nbsp; int colSum = 2;<br>&nbsp;&nbsp; excel.Cells[rowSum,2] = "合计";<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = XlHAlign.xlHAlignCenter;<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //设置选中的部分的颜色<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色，共计有56种<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //取得整个报表的标题<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; excel.Cells[2,2] = str;<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //设置整个报表的标题格式<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //设置报表表格为最适应宽度<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //设置整个报表的标题为跨列居中<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //绘制边框<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置上边线加粗<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗<br>&nbsp;&nbsp; xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //显示效果<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; excel.Visible=true;<br>&nbsp;<br>&nbsp;&nbsp; //xSt.Export(Server.MapPath(".")+""+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML);<br>&nbsp;&nbsp; xBk.SaveCopyAs(Server.MapPath(".")+""+this.xlfile.Text+".xls");<br>&nbsp;<br>&nbsp;&nbsp; ds = null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xBk.Close(false, null,null);<br>&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel.Quit();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);<br>&nbsp;&nbsp;&nbsp; System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xBk = null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; excel = null;<br>&nbsp;&nbsp; xSt = null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GC.Collect();<br>&nbsp;&nbsp; string path = Server.MapPath(this.xlfile.Text+".xls");<br>&nbsp;<br>&nbsp;&nbsp; System.IO.FileInfo file = new System.IO.FileInfo(path);<br>&nbsp;&nbsp; Response.Clear();<br>&nbsp;&nbsp; Response.Charset="GB2312";<br>&nbsp;&nbsp; Response.ContentEncoding=System.Text.Encoding.UTF8;<br>&nbsp;&nbsp; // 添加头信息，为"文件下载/另存为"对话框指定默认文件名<br>&nbsp;&nbsp; Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));<br>&nbsp;&nbsp; // 添加头信息，指定文件大小，让浏览器能够显示下载进度<br>&nbsp;&nbsp; Response.AddHeader("Content-Length", file.Length.ToString());<br>&nbsp; &nbsp;<br>&nbsp;&nbsp; // 指定返回的是一个不能被客户端读取的流，必须被下载<br>&nbsp;&nbsp; Response.ContentType = "application/ms-excel";<br>&nbsp; &nbsp;<br>&nbsp;&nbsp; // 把文件流发送到客户端<br>&nbsp;&nbsp; Response.WriteFile(file.FullName);<br>&nbsp;&nbsp; // 停止页面的执行<br>&nbsp; <br>&nbsp;&nbsp; Response.End();<br>}<br><br><br>&nbsp; <br>&nbsp;&nbsp; 上面的方面，均将要导出的execl数据，直接给浏览器输出文件流，下面的方法是首先将其存到服务器的某个文件夹中，然后把文件发送到客户端。这样可以持久的把导出的文件存起来，以便实现其它功能。<br>5、将execl文件导出到服务器上，再下载。<br><br><span style="COLOR: rgb(255,0,0)">二、winForm中导出Execl的方法：</span><br><br><span style="COLOR: rgb(0,0,255)">方法1：</span><br><br>&nbsp;&nbsp; SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);<br>&nbsp;&nbsp; SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);<br>&nbsp;&nbsp; DataSet ds=new DataSet();<br>&nbsp;&nbsp; da.Fill(ds,"table1");<br>&nbsp;&nbsp; DataTable dt=ds.Tables["table1"];<br>&nbsp;&nbsp; string name=System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString()+DateTime.Today.ToString("yyyyMMdd")+new Random(DateTime.Now.Millisecond).Next(10000).ToString()+".csv";//存放到 web.config中downloadurl指定的路径，文件格式为当前日期+4位随机数<br>&nbsp;&nbsp; FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write);<br>&nbsp;&nbsp; StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));<br>&nbsp;&nbsp; sw.WriteLine("自动编号,姓名,年龄");<br>&nbsp;&nbsp; foreach(DataRow dr in dt.Rows)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; sw.Close();<br>&nbsp;&nbsp; Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));<br>&nbsp;&nbsp; Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流，必须被下载<br>&nbsp;&nbsp; Response.WriteFile(name); // 把文件流发送到客户端<br>&nbsp;&nbsp; Response.End();<br><br><br>&nbsp;<br>public void Out2Excel(string sTableName,string url)<br>{<br>Excel.Application oExcel=new Excel.Application();<br>Workbooks oBooks;<br>Workbook oBook;<br>Sheets oSheets;<br>Worksheet oSheet;<br>Range oCells;<br>string sFile="",sTemplate="";<br>//<br>System.Data.DataTable dt=TableOut(sTableName).Tables[0];<br><br>sFile=url+"myExcel.xls";<br>sTemplate=url+"MyTemplate.xls";<br>//<br>oExcel.Visible=false;<br>oExcel.DisplayAlerts=false;<br>//定义一个新的工作簿<br>oBooks=oExcel.Workbooks;<br>oBooks.Open(sTemplate,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Type.Missing, Type.Missing);<br>oBook=oBooks.get_Item(1);<br>oSheets=oBook.Worksheets;<br>oSheet=(Worksheet)oSheets.get_Item(1);<br>//命名该sheet<br>oSheet.Name="Sheet1";<br><br>oCells=oSheet.Cells;<br>//调用dumpdata过程，将数据导入到Excel中去<br>DumpData(dt,oCells);<br>//保存<br>oSheet.SaveAs(sFile,Excel.XlFileFormat.xlTemplate,Type.Missing,Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing);<br>oBook.Close(false, Type.Missing,Type.Missing);<br>//退出Excel，并且释放调用的COM资源<br>oExcel.Quit();<br><br>GC.Collect();<br>KillProcess("Excel");<br>}<br><br>private void KillProcess(string processName)<br>{<br>System.Diagnostics.Process myproc= new System.Diagnostics.Process();<br>//得到所有打开的进程<br>try<br>{<br>foreach (Process thisproc in Process.GetProcessesByName(processName))<br>{<br>if(!thisproc.CloseMainWindow())<br>{<br>thisproc.Kill();<br>}<br>}<br>}<br>catch(Exception Exc)<br>{<br>throw new Exception("",Exc);<br>}<br>}<br><br><br><span style="COLOR: rgb(0,0,255)">方法2：</span><br>protected void ExportExcel()<br>&nbsp; {<br>&nbsp;&nbsp; gridbind();<br>&nbsp;&nbsp; if(ds1==null) return;<br>&nbsp;<br>&nbsp;&nbsp; string saveFileName="";<br>//&nbsp;&nbsp; bool fileSaved=false;<br>&nbsp;&nbsp; SaveFileDialog saveDialog=new SaveFileDialog();<br>&nbsp;&nbsp; saveDialog.DefaultExt ="xls";<br>&nbsp;&nbsp; saveDialog.Filter="Excel文件|*.xls";<br>&nbsp;&nbsp; saveDialog.FileName ="Sheet1";<br>&nbsp;&nbsp; saveDialog.ShowDialog();<br>&nbsp;&nbsp; saveFileName=saveDialog.FileName;<br>&nbsp;&nbsp; if(saveFileName.IndexOf(":")&lt;0) return; //被点了取消<br>//&nbsp;&nbsp; excelapp.Workbooks.Open&nbsp;&nbsp; (App.path &amp; 工程进度表.xls)<br>&nbsp; <br>&nbsp;&nbsp; Excel.Application xlApp=new Excel.Application();<br>&nbsp;&nbsp; object missing=System.Reflection.Missing.Value;<br>&nbsp;<br><br>&nbsp;&nbsp; if(xlApp==null)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; MessageBox.Show("无法创建Excel对象，可能您的机子未安装Excel");<br>&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; Excel.Workbooks workbooks=xlApp.Workbooks;<br>&nbsp;&nbsp; Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);<br>&nbsp;&nbsp; Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1<br>&nbsp;&nbsp; Excel.Range range;<br>&nbsp; &nbsp;<br>&nbsp;<br>&nbsp;&nbsp; string oldCaption=Title_label .Text.Trim ();<br>&nbsp;&nbsp; long totalCount=ds1.Tables[0].Rows.Count;<br>&nbsp;&nbsp; long rowRead=0;<br>&nbsp;&nbsp; float percent=0;<br>&nbsp;<br>&nbsp;&nbsp; worksheet.Cells[1,1]=Title_label .Text.Trim ();<br>&nbsp;&nbsp; //写入字段<br>&nbsp;&nbsp; for(int i=0;i&lt;ds1.Tables[0].Columns.Count;i++)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; worksheet.Cells[2,i+1]=ds1.Tables[0].ColumnsIdea [I].ColumnName; <br>&nbsp;&nbsp;&nbsp; range=(Excel.Range)worksheet.Cells[2,i+1];<br>&nbsp;&nbsp;&nbsp; range.Interior.ColorIndex = 15;<br>&nbsp;&nbsp;&nbsp; range.Font.Bold = true;<br>&nbsp;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; //写入数值<br>&nbsp;&nbsp; Caption .Visible = true;<br>&nbsp;&nbsp; for(int r=0;r&lt;ds1.Tables[0].Rows.Count;r++)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;ds1.Tables[0].Columns.Count;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; worksheet.Cells[r+3,i+1]=ds1.Tables[0].Rows[r];&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; rowRead++;<br>&nbsp;&nbsp;&nbsp; percent=((float)(100*rowRead))/totalCount;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; this.Caption.Text= "正在导出数据["+ percent.ToString("0.00")&nbsp; +"%]...";<br>&nbsp;&nbsp;&nbsp; Application.DoEvents();<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; worksheet.SaveAs(saveFileName,missing,missing,missing,missing,missing,missing,missing,missing);<br>&nbsp; &nbsp;<br>&nbsp;&nbsp; this.Caption.Visible= false;<br>&nbsp;&nbsp; this.Caption.Text= oldCaption;<br>&nbsp;<br>&nbsp;&nbsp; range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[ds1.Tables[0].Rows.Count+2,ds1.Tables[0].Columns.Count]);<br>&nbsp;&nbsp; range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);<br>&nbsp; <br>&nbsp;&nbsp; range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;<br>&nbsp;&nbsp; range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;<br>&nbsp;&nbsp; range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;<br>&nbsp;<br>&nbsp;&nbsp; if(ds1.Tables[0].Columns.Count&gt;1)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex=Excel.XlColorIndex.xlColorIndexAutomatic;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; workbook.Close(missing,missing,missing);<br>&nbsp;&nbsp; xlApp.Quit();<br>&nbsp; }<br><br><br style="COLOR: rgb(255,0,0)"><span style="COLOR: rgb(255,0,0)">三、附注：</span><br>虽然都是实现导出 execl的功能，但在asp.net和winform的程序中，实现的代码是各不相同的。在asp.net中，是在服务器端读取数据，在服务器端把数据以ms-execl的格式，以Response输出到浏览器（客户端)；而在winform中，是把数据读到客户端（因为winform运行端就是客户端），然后调用客户端安装的office组件，将读到的数据写在execl的工作簿中。</div>
</div>
</div>
<img src ="http://www.cnitblog.com/skl/aggbug/52834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/skl/" target="_blank">单</a> 2008-12-19 14:59 <a href="http://www.cnitblog.com/skl/archive/2008/12/19/52834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>