<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_善待自己,珍惜今天,恩泽他人,享受生活</title><subtitle type="text">不放弃任何解决困难的机会，人的一生就是解决困难的过程。当我们走完一生才能说没有问题要解决了。面对工作、生活上的压力，面对来自家庭、朋友、同事、上司等的困惑。要排除万难，否则我们就会被万难排除！</subtitle><id>http://feed.cnblogs.com/blog/u/14417/rss</id><updated>2012-02-09T12:09:16Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/14417/rss"/><entry><id>http://www.cnblogs.com/dwfbenben/archive/2012/02/09/2344468.html</id><title type="text">Visual Studio 2008（C#）XML注释提取成帮助文档的方法(转)</title><summary type="text">1、给方法和类添加XML注释 可以手动添加，具体规则可以看MSDN：http://msdn.microsoft.com/zh-cn/library/b2s063f7(VS.80).aspx 这里介绍一个工具，可以帮助生成注释，下载地址：http://submain.com/products/ghostdoc.aspx 安装ghostdoc后，可以在右键和工具菜单中找到它： 把鼠标放到一个方法或类...</summary><published>2012-02-09T12:09:00Z</published><updated>2012-02-09T12:09:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2012/02/09/2344468.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2012/02/09/2344468.html"/><content type="html">&lt;p&gt;1、给方法和类添加XML注释 &lt;p&gt;可以手动添加，具体规则可以看MSDN：&lt;a href="http://msdn.microsoft.com/zh-cn/library/b2s063f7(VS.80).aspx"&gt;http://msdn.microsoft.com/zh-cn/library/b2s063f7(VS.80).aspx&lt;/a&gt; &lt;p&gt;这里介绍一个工具，可以帮助生成注释，下载地址：&lt;a href="http://submain.com/products/ghostdoc.aspx"&gt;http://submain.com/products/ghostdoc.aspx&lt;/a&gt; &lt;p&gt;安装ghostdoc后，可以在右键和工具菜单中找到它： &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc1.jpg"&gt;&lt;img title="ghostdoc1" alt="ghostdoc1 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc1.jpg" width="499" height="178"&gt;&lt;/a&gt; &lt;p&gt;把鼠标放到一个方法或类的里边，点击右键，”document this”，就会自动添加注释了，注释是英文的，你可以改成更符合你想法的。 &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc2.jpg"&gt;&lt;img title="ghostdoc2" alt="ghostdoc2 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc2.jpg" width="471" height="141"&gt;&lt;/a&gt; &lt;p&gt;2、安装Sandcastle 和Sandcastle Help File Builder &lt;p&gt;下载地址： &lt;p&gt;&lt;a href="http://sandcastle.codeplex.com/"&gt;http://sandcastle.codeplex.com/&lt;/a&gt; &lt;p&gt;&lt;a href="http://shfb.codeplex.com/"&gt;http://shfb.codeplex.com/&lt;/a&gt; &lt;p&gt;关闭打开的Visual Studio，安装上边的两个文件。 &lt;p&gt;3、设置要提取注释的项目 &lt;p&gt;在项目上右键打开项目属性，找到“生成”选项卡，勾选“XML文档文件”。 &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc3.jpg"&gt;&lt;img title="ghostdoc3" alt="ghostdoc3 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc3.jpg" width="498" height="87"&gt;&lt;/a&gt; &lt;p&gt;重新生成项目。 &lt;p&gt;4、使用Sandcastle Help File Builder &lt;p&gt;运行Sandcastle Help File Builder，新建一个项目： &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc4.jpg"&gt;&lt;img title="ghostdoc4" alt="ghostdoc4 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc4.jpg" width="328" height="168"&gt;&lt;/a&gt; &lt;p&gt;在界面右侧的Project Explorer中，可以看到建立的项目： &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc5.jpg"&gt;&lt;img title="ghostdoc5" alt="ghostdoc5 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc5.jpg" width="251" height="115"&gt;&lt;/a&gt; &lt;p&gt;在Documentation Sources上点右键添加Documentation Source： &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc6.jpg"&gt;&lt;img title="ghostdoc6" alt="ghostdoc6 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc6.jpg" width="296" height="116"&gt;&lt;/a&gt; &lt;p&gt;选择项目文件即可： &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc7.jpg"&gt;&lt;img title="ghostdoc7" alt="ghostdoc7 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc7.jpg" width="156" height="42"&gt;&lt;/a&gt; &lt;p&gt;配置项目属性： &lt;p&gt;（1）.NET版本和帮助文件的格式 &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc8.jpg"&gt;&lt;img title="ghostdoc8" alt="ghostdoc8 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc8.jpg" width="498" height="42"&gt;&lt;/a&gt; &lt;p&gt;这里帮助文件的格式是：HtmlHelp1，需要先下载这个程序。 &lt;p&gt;下载地址：&lt;a href="http://msdn.microsoft.com/en-us/library/ms669985(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms669985(VS.85).aspx&lt;/a&gt; &lt;p&gt;其它格式，也需要相关程序才可以运行，如果没有，自己找找下载地址。 &lt;p&gt;（2）设置文档标题、名称、与语言 &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc9.jpg"&gt;&lt;img title="ghostdoc9" alt="ghostdoc9 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc9.jpg" width="591" height="72"&gt;&lt;/a&gt; &lt;p&gt;（3）设置HtmlHelp1的安装路径、输出文档路径、SandcastlePath的路径 &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc10.jpg"&gt;&lt;img title="ghostdoc10" alt="ghostdoc10 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc10.jpg" width="610" height="81"&gt;&lt;/a&gt; &lt;p&gt;其它属性不再详述，可以自己试试，找找资料。 &lt;p&gt;最后：Build Project就行了。 &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc11.jpg"&gt;&lt;img title="ghostdoc11" alt="ghostdoc11 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc11.jpg" width="327" height="166"&gt;&lt;/a&gt; &lt;p&gt;等待几分钟，去输出目录看看，一个chm文件生成了： &lt;p&gt;&lt;a href="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc12.jpg"&gt;&lt;img title="ghostdoc12" alt="ghostdoc12 Visual Studio 2008（C#）XML注释提取成帮助文档的方法" src="http://blog.bossma.cn/wp-content/uploads/2010/05/ghostdoc12.jpg" width="618" height="166"&gt;&lt;/a&gt; &lt;p&gt;如果没有生成，看看生成日志是什么原因。 &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;已知的一个错误： &lt;p&gt;BUILDASSEMBLER : error : CopyFromIndexComponent: The indexed document ‘C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\zh-CN\PresentationCore.xml’ is not a valid XML document. The error message is: “.”(十六进制值 0×00)是无效的字符。 行 20465，位置 5。 &lt;p&gt;安装非英文版VS 2008 SP1导致的问题，到这里下载补丁：VS90SP1-KB957507-v2-CHS-x86.exe &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/KB957507/Release/ProjectReleases.aspx?ReleaseId=1854"&gt;http://code.msdn.microsoft.com/KB957507/Release/ProjectReleases.aspx?ReleaseId=1854&lt;/a&gt; &lt;p&gt;安装更新，这个问题就不会存在了。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;这篇文章就介绍到这里，备忘，并方便大家快速上手。 &lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2344468.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2012/02/09/2344468.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2012/01/10/2317678.html</id><title type="text">工程师突击:SAP ABAP实用程序开发攻略(转)</title><summary type="text">se37写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制。bapi是sap做好的实现特定业务操作的rfc。idoc是基于sap自己的类似xml格式的文档数据交换的方式。rfc必须在线的方式调用，一般做同步的，idoc基于文档， se37写出来的叫function,其中可以远程调用的叫rfc,remote...</summary><published>2012-01-09T22:53:00Z</published><updated>2012-01-09T22:53:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2012/01/10/2317678.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2012/01/10/2317678.html"/><content type="html">&lt;p&gt;se37写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制。bapi是sap做好的实现特定业务操作的rfc。idoc是基于sap自己的类似xml格式的文档数据交换的方式。rfc必须在线的方式调用，一般做同步的，idoc基于文档， &lt;p&gt;se37写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制。bapi是sap做好的实现特定业务操作的rfc。idoc是基于sap自己的类似xml格式的文档数据交换的方式。rfc必须在线的方式调用，一般做同步的，idoc基于文档，可以实现异步的。  &lt;p&gt;&lt;img border="0" alt="" src="http://www.sapzg.com/bbs/UpFile/UpAttachment/2008-10/200810301050310.jpg"&gt; &lt;p&gt;idoc是基于sap自己的类似xml格式的文档数据交换的方式。rfc必须在线的方式调用，一般做同步的，idoc基于文档，可以实现异步的。 &lt;p&gt;idoc是系统间利用message传递,不涉及底层函数调用,idoc的处理方式是用edi来执行的.&lt;br&gt;你可以理解为IDOC是SAP为了同外部系统或内部不同client通迅所采用的一种数据结构,不同的idoc type 定义了不同的格式，如关于material master data 的IDOC, BOM, PO,SO等相关的IDOC,, ALE 主要用于内部数据交换用的，如不同client, EDI用于同外部系统的交换数据，它们的本质都 是base on IDOC。。。idoc是基于sap自己的类似xml格式的文档数据交换的方式。idoc基于文档，可以实现异步的。 &lt;p&gt;RFC是面向过程的，调用简单直接； &lt;br&gt;BAPI是面向对象的，有属性、有方法、有事件，更加复杂和丰富，更能反映SAP的业务应用，而 &lt;br&gt;BAPI方法的构造是基于RFC的，你也可以认为BAPI封装了RFC&lt;br&gt;我觉得RFC在应用时最为灵活。 &lt;br&gt;IDOC是SAP标准的文件交换格式，SAP已经有了大量的Function Module来处理和传递IDOC，特别 &lt;br&gt;是对于要和其它系统交换数据时，配合一些系统如biztalk server，IDOC会显得非常的方便，开 &lt;br&gt;发的工作量也是最小的。 &lt;br&gt;RFC的话，如果配合SAP的BDC使用的话，或者你是一个ABAP的高手的话，RFC也是很灵活的。 &lt;br&gt;至于BAPI的话，我觉得SAP的bapi概念很好，但是接口很不完善，很多数据无法通过SAP本身的 &lt;br&gt;BAPI完成，得自己来做开发。 &lt;br&gt;对于bapi和rfc到底那个好用，我觉得没什么定论。 &lt;br&gt;有时bapi好用，有时rfc好用。 &lt;br&gt;bapi好用在于，其效率相对比较高，这个主要体现在有些bapi是用direct input的方式写的， &lt;br&gt;效率高。 &lt;br&gt;但你如果用rfc写也有他的好处，当你写的不只是一个luw时，而每个luw都比较简单， &lt;br&gt;在这种情况下就用rfc开发比较快。 &lt;br&gt;SAP的idoc文件替代了edi文件的作用。 &lt;br&gt;ale是一种通讯的模式。 &lt;br&gt;bapi,一种函数，sap提供一大堆，用于主要的业务流程的处理 &lt;br&gt;rfc,一种函数，用于与外部程序调用  &lt;p&gt;应该说RFC是其它内容的基础，它是一个Function module，可以被远程调用。而BAPI本身就是一 &lt;br&gt;个RFC，但它被作为BO的Interface，作用更进一步，除了BAPI文档中提到的内容外，还可以作为 &lt;br&gt;ALE/IDOC的开发基础。 &lt;br&gt;ALE是R/3系统之间的应用层数据交换，至于用什么，就看具体配置了，比如可以用IDOC，同步／ &lt;br&gt;异步BAPI，甚至用EDI。非SAP系统无法用ALE来实现。 &lt;br&gt;至于数据传输的方式，可以是IDOC（底层是用RFC来实际的），也可以是EDI，所以说IDOC／EDI实 &lt;br&gt;际上是数据的载体。 &lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2317678.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2012/01/10/2317678.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308071.html</id><title type="text">经典Sql大全--转</title><summary type="text">一、基础 1、说明：创建数据库CREATE DATABASE database-name2、说明：删除数据库drop database dbname3、说明：备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice &amp;#39;disk&amp;#39;, &amp;#39;testBack&amp;#39;, &amp;#39;c:\mssql7backup\MyNwind_1.dat&amp;#39;--- 开始 备...</summary><published>2011-12-30T14:11:00Z</published><updated>2011-12-30T14:11:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308071.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308071.html"/><content type="html">&lt;p&gt;&lt;a name="_Toc237862917"&gt;一、基础&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862918"&gt;&lt;b&gt;1、说明：创建数据库&lt;br&gt;CREATE DATABASE database-name&lt;/b&gt;&lt;br&gt;&lt;b&gt;2、说明：删除数据库&lt;br&gt;&lt;/b&gt;&lt;b&gt;drop database dbname&lt;/b&gt;&lt;br&gt;&lt;b&gt;3、说明：备份sql server&lt;br&gt;--- 创建 备份数据的 device&lt;br&gt;USE master&lt;br&gt;EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'&lt;br&gt;--- 开始 备份&lt;br&gt;BACKUP DATABASE pubs TO testBack&lt;/b&gt;&lt;br&gt;&lt;b&gt;4、说明：创建新表&lt;br&gt;create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)&lt;/b&gt;&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862919"&gt;&lt;b&gt;根据已有的表创建新表： &lt;/b&gt;&lt;br&gt;&lt;b&gt;A：create table tab_new like tab_old (使用旧表创建新表)&lt;/b&gt;&lt;br&gt;&lt;b&gt;B：create table tab_new as select col1,col2… from tab_old definition only&lt;/b&gt;&lt;br&gt;&lt;b&gt;5、说明：删除新表&lt;br&gt;drop table tabname&lt;/b&gt;&lt;br&gt;&lt;b&gt;6、说明：增加一个列&lt;br&gt;Alter table tabname add column col type&lt;/b&gt;&lt;br&gt;&lt;b&gt;注&lt;/b&gt;：&lt;u&gt;列增加后将不能删除。&lt;/u&gt;&lt;u&gt;DB2中列加上后数据类型也不能改变，唯一能改变的是增加varchar类型的长度。&lt;br&gt;&lt;/u&gt;&lt;b&gt;7、说明：添加主键&lt;/b&gt;： &lt;b&gt;Alter table tabname add primary key(col) &lt;br&gt;&lt;/b&gt;说明：删除主键：&lt;b&gt; Alter table tabname drop primary key(col) &lt;/b&gt;&lt;br&gt;&lt;b&gt;8、说明：创建索引&lt;/b&gt;：&lt;b&gt;create [unique] index idxname on tabname(col….) &lt;br&gt;&lt;/b&gt;删除索引：&lt;b&gt;drop index idxname&lt;/b&gt;&lt;br&gt;注：索引是不可更改的，想更改必须删除重新建。&lt;br&gt;&lt;b&gt;9、说明：创建视图&lt;/b&gt;：create view viewname as select statement &lt;br&gt;&lt;b&gt;删除视图&lt;/b&gt;：drop view viewname&lt;br&gt;&lt;b&gt;10、说明：几个简单的基本的sql语句&lt;br&gt;&lt;/b&gt;&lt;b&gt;选择：&lt;/b&gt;select * from table1 where 范围&lt;br&gt;&lt;b&gt;插入：&lt;/b&gt;insert into table1(field1,field2) values(value1,value2)&lt;br&gt;&lt;b&gt;删除：&lt;/b&gt;delete from table1 where 范围&lt;b&gt;&lt;br&gt;更新&lt;/b&gt;：update table1 set field1=value1 where 范围&lt;br&gt;&lt;b&gt;查找&lt;/b&gt;：select * from table1 where field1 like ’%value1%’ ---like的语法很精妙，查资料!&lt;br&gt;&lt;b&gt;排序&lt;/b&gt;：select * from table1 order by field1,field2 [desc]&lt;br&gt;&lt;b&gt;总数&lt;/b&gt;：select count as totalcount from table1&lt;br&gt;&lt;b&gt;求和&lt;/b&gt;：select sum(field1) as sumvalue from table1&lt;br&gt;&lt;b&gt;平均&lt;/b&gt;：select avg(field1) as avgvalue from table1&lt;br&gt;&lt;b&gt;最大&lt;/b&gt;：select max(field1) as maxvalue from table1&lt;br&gt;&lt;b&gt;最小&lt;/b&gt;：select min(field1) as minvalue from table1&lt;br&gt;&lt;b&gt;11、说明：几个高级查询运算词&lt;br&gt;A： UNION 运算符&lt;/b&gt;&lt;br&gt;UNION 运算符通过组合其他两个结果表（例如 TABLE1 和 TABLE2）并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时（即 UNION ALL），不消除重复行。两种情况下，派生表的每一行不是来自 TABLE1 就是来自 TABLE2。&lt;br&gt;&lt;b&gt;B： EXCEPT 运算符&lt;br&gt;EXCEPT&lt;/b&gt; 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL)，不消除重复行。&lt;br&gt;&lt;b&gt;C： INTERSECT 运算符&lt;br&gt;INTERSECT&lt;/b&gt; 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 &lt;b&gt;ALL&lt;/b&gt; 随 INTERSECT 一起使用时 (INTERSECT ALL)，不消除重复行。&lt;br&gt;&lt;b&gt;注：&lt;/b&gt;使用运算词的几个查询结果行必须是一致的。&lt;br&gt;&lt;b&gt;12、说明：使用外连接&lt;br&gt;&lt;/b&gt;A、&lt;b&gt;left （outer） join&lt;/b&gt;：&lt;br&gt;左外连接（左连接）：结果集几包括连接表的匹配行，也包括左连接表的所有行。&lt;br&gt;SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c&lt;br&gt;&lt;b&gt;B：right （outer） join: &lt;/b&gt;&lt;br&gt;右外连接(右连接)：结果集既包括连接表的匹配连接行，也包括右连接表的所有行。&lt;br&gt;&lt;b&gt;C：full/cross （outer） join&lt;/b&gt;：&lt;br&gt;全外连接：不仅包括符号连接表的匹配行，还包括两个连接表中的所有记录。&lt;br&gt;&lt;b&gt;12、分组&lt;/b&gt;&lt;b&gt;:Group by:&lt;br&gt;&lt;/b&gt;一张表，一旦分组 完成后，查询后只能得到组相关的信息。&lt;br&gt;&lt;b&gt;组相关的信息：&lt;/b&gt;（统计信息） count,sum,max,min,avg &lt;b&gt;分组的标准)&lt;br&gt;&lt;/b&gt;&lt;b&gt;在SQLServer中分组时：不能以text,ntext,image类型的字段作为分组依据&lt;br&gt;在selecte统计函数中的字段，不能和普通的字段放在一起；&lt;/b&gt;&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862920"&gt;&lt;b&gt;13、对数据库进行操作：&lt;br&gt;分离数据库&lt;/b&gt;：&lt;b&gt; sp_detach_db; 附加数据库&lt;/b&gt;：&lt;b&gt;sp_attach_db &lt;/b&gt;后接表明，附加需要完整的路径名&lt;br&gt;&lt;b&gt;14.如何修改数据库的名称:&lt;/b&gt;&lt;br&gt;sp_renamedb 'old_name', 'new_name'&lt;/a&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862921"&gt;&lt;b&gt;二、提升&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862922"&gt;&lt;b&gt;1、说明：复制表(只复制结构,源表名：a 新表名：b) (Access可用)&lt;br&gt;法一：&lt;/b&gt;select * into b from a where 1&amp;lt;&amp;gt;1（仅用于SQlServer）&lt;br&gt;&lt;b&gt;法二：&lt;/b&gt;select top 0 * into b from a&lt;br&gt;&lt;b&gt;2、说明：拷贝表(拷贝数据,源表名：a 目标表名：b) (Access可用)&lt;br&gt;&lt;/b&gt;insert into b(a, b, c) select d,e,f from b;&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862923"&gt;&lt;b&gt;3、说明：跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)&lt;br&gt;&lt;/b&gt;insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件&lt;br&gt;例子：..from b in '"&amp;amp;Server.MapPath(".")&amp;amp;"\data.mdb" &amp;amp;"' where..&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862924"&gt;&lt;b&gt;4、说明：子查询(表名1：a 表名2：b)&lt;br&gt;&lt;/b&gt;select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862925"&gt;&lt;b&gt;5、说明：显示文章、提交人和最后回复时间&lt;br&gt;&lt;/b&gt;select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862926"&gt;&lt;b&gt;6、说明：外连接查询(表名1：a 表名2：b)&lt;br&gt;&lt;/b&gt;select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862927"&gt;&lt;b&gt;7、说明：在线视图查询(表名1：a )&lt;br&gt;&lt;/b&gt;select * from (SELECT a,b,c FROM a) T where t.a &amp;gt; 1;&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862928"&gt;&lt;b&gt;8、说明：between的用法,between限制查询数据范围时包括了边界值,not between不包括&lt;br&gt;&lt;/b&gt;select * from table1 where time between time1 and time2&lt;br&gt;select a,b,c, from table1 where a not between 数值1 and 数值2&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862929"&gt;&lt;b&gt;9、说明：in 的使用方法&lt;br&gt;&lt;/b&gt;select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862930"&gt;&lt;b&gt;10、说明：两张关联表，删除主表中已经在副表中没有的信息&lt;br&gt;&lt;/b&gt;delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862931"&gt;&lt;b&gt;11、说明：四表联查问题：&lt;br&gt;&lt;/b&gt;select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862932"&gt;&lt;b&gt;12、说明：日程安排提前五分钟提醒&lt;br&gt;&lt;/b&gt;SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())&amp;gt;5&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862933"&gt;&lt;b&gt;13&lt;/b&gt;&lt;/a&gt;&lt;b&gt;、说明：一条&lt;/b&gt;&lt;b&gt;sql &lt;/b&gt;&lt;b&gt;语句搞定数据库分页&lt;/b&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段&lt;br&gt;&lt;b&gt;具体实现：&lt;/b&gt;&lt;br&gt;关于数据库分页： &lt;p&gt;declare @start int,@end int  &lt;p&gt;@sql nvarchar(600) &lt;p&gt;set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid&amp;gt;-1)’ &lt;p&gt;exec sp_executesql @sql &lt;p&gt;&lt;b&gt;注意：在&lt;/b&gt;&lt;b&gt;top&lt;/b&gt;&lt;b&gt;后不能直接跟一个变量，所以在实际应用中只有这样的进行特殊的处理。&lt;/b&gt;&lt;b&gt;Rid&lt;/b&gt;&lt;b&gt;为一个标识列，如果&lt;/b&gt;&lt;b&gt;top&lt;/b&gt;&lt;b&gt;后还有具体的字段，这样做是非常有好处的。因为这样可以避免&lt;/b&gt;&lt;b&gt; top&lt;/b&gt;&lt;b&gt;的字段如果是逻辑索引的，查询的结果后实际表中的不一致（&lt;/b&gt;&lt;b&gt;逻辑索引中的数据有可能和数据表中的不一致，而查询时如果处在索引则首先查询索引&lt;/b&gt;&lt;b&gt;）&lt;/b&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862934"&gt;&lt;b&gt;14、说明：前10条记录&lt;br&gt;&lt;/b&gt;select top 10 * form table1 where 范围&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862935"&gt;&lt;b&gt;15、说明：选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)&lt;br&gt;&lt;/b&gt;select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862936"&gt;&lt;b&gt;16、说明：包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表&lt;br&gt;&lt;/b&gt;(select a from tableA ) except (select a from tableB) except (select a from tableC)&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862937"&gt;&lt;b&gt;17、说明：随机取出10条数据&lt;br&gt;&lt;/b&gt;select top 10 * from tablename order by &lt;b&gt;newid()&lt;/b&gt;&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862938"&gt;&lt;b&gt;18、说明：随机选择记录&lt;br&gt;&lt;/b&gt;select newid()&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862939"&gt;&lt;b&gt;19、说明：删除重复记录&lt;br&gt;1),&lt;/b&gt;delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)&lt;br&gt;&lt;b&gt;2)&lt;/b&gt;,select distinct * into temp from tablename&lt;br&gt;delete from tablename&lt;br&gt;insert into tablename select * from temp&lt;br&gt;&lt;b&gt;评价： 这种操作牵连大量的数据的移动，这种做法不适合大容量但数据操作&lt;br&gt;3),例如：在一个外部表中导入数据，由于某些原因第一次只导入了一部分，但很难判断具体位置，这样只有在下一次全部导入，这样也就产生好多重复的字段，怎样删除重复字段&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;alter table tablename&lt;br&gt;--添加一个自增列&lt;br&gt;add column_b int identity(1,1)&lt;br&gt;delete from tablename where column_b not in(&lt;br&gt;select max(column_b) from tablename group by column1,column2,...)&lt;br&gt;alter table tablename drop column column_b &lt;p&gt;&lt;a name="_Toc237862940"&gt;&lt;b&gt;20、说明：列出数据库里所有的表名&lt;br&gt;&lt;/b&gt;select name from sysobjects where type='U' // U代表用户&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862941"&gt;&lt;b&gt;21、说明：列出表里的所有的列名&lt;br&gt;&lt;/b&gt;select name from syscolumns where id=object_id('TableName')&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862942"&gt;&lt;b&gt;22、说明：列示type、vender、pcs字段，以type字段排列，case可以方便地实现多重选择，类似select 中的case。&lt;br&gt;&lt;/b&gt;select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type&lt;br&gt;&lt;b&gt;显示结果：&lt;br&gt;type vender pcs&lt;br&gt;&lt;/b&gt;电脑 A 1&lt;br&gt;电脑 A 1&lt;br&gt;光盘 B 2&lt;br&gt;光盘 A 2&lt;br&gt;手机 B 3&lt;br&gt;手机 C 3&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862943"&gt;&lt;b&gt;23、说明：初始化表table1&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;TRUNCATE TABLE table1 &lt;p&gt;&lt;a name="_Toc237862944"&gt;&lt;b&gt;24、说明：选择从10到15的记录&lt;br&gt;&lt;/b&gt;select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862945"&gt;&lt;b&gt;三、技巧&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862946"&gt;&lt;b&gt;1、1=1，1=2的使用，在SQL语句组合时用的较多&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;“where 1=1” 是表示选择全部&amp;nbsp;&amp;nbsp;&amp;nbsp; “where 1=2”全部不选，&lt;/b&gt;&lt;br&gt;如：&lt;br&gt;if @strWhere !='' &lt;br&gt;begin&lt;br&gt;set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere &lt;br&gt;end&lt;br&gt;else &lt;br&gt;begin&lt;br&gt;set @strSQL = 'select count(*) as Total from [' + @tblName + ']' &lt;br&gt;end  &lt;p&gt;&lt;b&gt;我们可以直接写成&lt;/b&gt; &lt;p&gt;错误！未找到目录项。&lt;b&gt;&lt;br&gt;set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere 2、收缩数据库&lt;br&gt;&lt;/b&gt;--重建索引&lt;br&gt;DBCC REINDEX&lt;br&gt;DBCC INDEXDEFRAG&lt;br&gt;--收缩数据和日志&lt;br&gt;DBCC SHRINKDB&lt;br&gt;DBCC SHRINKFILE &lt;p&gt;&lt;a name="_Toc237862947"&gt;&lt;b&gt;3、压缩数据库&lt;br&gt;&lt;/b&gt;dbcc shrinkdatabase(dbname)&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862948"&gt;&lt;b&gt;4、转移数据库给新用户以已存在用户权限&lt;br&gt;&lt;/b&gt;exec sp_change_users_login 'update_one','newname','oldname'&lt;br&gt;go&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862949"&gt;&lt;b&gt;5、检查备份集&lt;br&gt;&lt;/b&gt;RESTORE VERIFYONLY from disk='E:\dvbbs.bak'&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862950"&gt;&lt;b&gt;6、修复数据库&lt;br&gt;&lt;/b&gt;ALTER DATABASE [dvbbs] SET SINGLE_USER&lt;br&gt;GO&lt;br&gt;DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK&lt;br&gt;GO&lt;br&gt;ALTER DATABASE [dvbbs] SET MULTI_USER&lt;br&gt;GO&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862951"&gt;&lt;b&gt;7、日志清除&lt;br&gt;&lt;/b&gt;SET NOCOUNT ON&lt;br&gt;DECLARE @LogicalFileName sysname,&lt;br&gt;@MaxMinutes INT,&lt;br&gt;@NewSize INT&lt;/a&gt; &lt;p&gt;USE tablename -- 要操作的数据库名&lt;br&gt;SELECT @LogicalFileName = 'tablename_log', -- 日志文件名&lt;br&gt;@MaxMinutes = 10, -- Limit on time allowed to wrap log.&lt;br&gt;@NewSize = 1 -- 你想设定的日志文件的大小(M) &lt;p&gt;Setup / initialize&lt;br&gt;DECLARE @OriginalSize int&lt;br&gt;SELECT @OriginalSize = size &lt;br&gt;FROM sysfiles&lt;br&gt;WHERE name = @LogicalFileName&lt;br&gt;SELECT 'Original Size of ' + db_name() + ' LOG is ' + &lt;br&gt;CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + &lt;br&gt;CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'&lt;br&gt;FROM sysfiles&lt;br&gt;WHERE name = @LogicalFileName&lt;br&gt;CREATE TABLE DummyTrans&lt;br&gt;(DummyColumn char (8000) not null) &lt;p&gt;DECLARE @Counter&amp;nbsp;&amp;nbsp;&amp;nbsp; INT,&lt;br&gt;@StartTime DATETIME,&lt;br&gt;@TruncLog&amp;nbsp;&amp;nbsp; VARCHAR(255)&lt;br&gt;SELECT @StartTime = GETDATE(),&lt;br&gt;@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' &lt;p&gt;DBCC SHRINKFILE (@LogicalFileName, @NewSize)&lt;br&gt;EXEC (@TruncLog)&lt;br&gt;-- Wrap the log if necessary.&lt;br&gt;WHILE @MaxMinutes &amp;gt; DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired&lt;br&gt;AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)&amp;nbsp; &lt;br&gt;AND (@OriginalSize * 8 /1024) &amp;gt; @NewSize&amp;nbsp; &lt;br&gt;BEGIN -- Outer loop.&lt;br&gt;SELECT @Counter = 0&lt;br&gt;WHILE&amp;nbsp;&amp;nbsp; ((@Counter &amp;lt; @OriginalSize / 16) AND (@Counter &amp;lt; 50000))&lt;br&gt;BEGIN -- update&lt;br&gt;INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans&lt;br&gt;SELECT @Counter = @Counter + 1&lt;br&gt;END&lt;br&gt;EXEC (@TruncLog)&amp;nbsp; &lt;br&gt;END&lt;br&gt;SELECT 'Final Size of ' + db_name() + ' LOG is ' +&lt;br&gt;CONVERT(VARCHAR(30),size) + ' 8K pages or ' + &lt;br&gt;CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'&lt;br&gt;FROM sysfiles &lt;br&gt;WHERE name = @LogicalFileName&lt;br&gt;DROP TABLE DummyTrans&lt;br&gt;SET NOCOUNT OFF  &lt;p&gt;&lt;a name="_Toc237862952"&gt;&lt;b&gt;8、说明：更改某个表&lt;br&gt;&lt;/b&gt;exec sp_changeobjectowner 'tablename','dbo'&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862953"&gt;&lt;b&gt;9、存储更改全部表&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch&lt;br&gt;@OldOwner as NVARCHAR(128),&lt;br&gt;@NewOwner as NVARCHAR(128)&lt;br&gt;AS &lt;p&gt;DECLARE @Name&amp;nbsp;&amp;nbsp;&amp;nbsp; as NVARCHAR(128)&lt;br&gt;DECLARE @Owner&amp;nbsp;&amp;nbsp; as NVARCHAR(128)&lt;br&gt;DECLARE @OwnerName&amp;nbsp;&amp;nbsp; as NVARCHAR(128) &lt;p&gt;DECLARE curObject CURSOR FOR &lt;br&gt;select 'Name'&amp;nbsp;&amp;nbsp;&amp;nbsp; = name,&lt;br&gt;&amp;nbsp;&amp;nbsp; 'Owner'&amp;nbsp;&amp;nbsp;&amp;nbsp; = user_name(uid)&lt;br&gt;from sysobjects&lt;br&gt;where user_name(uid)=@OldOwner&lt;br&gt;order by name &lt;p&gt;OPEN&amp;nbsp;&amp;nbsp; curObject&lt;br&gt;FETCH NEXT FROM curObject INTO @Name, @Owner&lt;br&gt;WHILE(@@FETCH_STATUS=0)&lt;br&gt;BEGIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;if @Owner=@OldOwner &lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp; set @OwnerName = @OldOwner + '.' + rtrim(@Name)&lt;br&gt;&amp;nbsp;&amp;nbsp; exec sp_changeobjectowner @OwnerName, @NewOwner&lt;br&gt;end&lt;br&gt;-- select @name,@NewOwner,@OldOwner &lt;p&gt;FETCH NEXT FROM curObject INTO @Name, @Owner&lt;br&gt;END &lt;p&gt;close curObject&lt;br&gt;deallocate curObject&lt;br&gt;GO &lt;p&gt;&lt;a name="_Toc237862954"&gt;&lt;b&gt;10、SQL SERVER中直接循环写入数据&lt;br&gt;&lt;/b&gt;&lt;/a&gt;declare @i int&lt;br&gt;set @i=1&lt;br&gt;while @i&amp;lt;30&lt;br&gt;begin&lt;br&gt;insert into test (userid) values(@i)&lt;br&gt;set @i=@i+1&lt;br&gt;end&lt;br&gt;&lt;b&gt;案例&lt;/b&gt;&lt;b&gt;：&lt;/b&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;b&gt;有如下表，要求就裱中所有沒有及格的成績，在每次增長&lt;/b&gt;&lt;b&gt;0.1的基礎上，使他們剛好及格:&lt;/b&gt; &lt;p&gt;Name score &lt;p&gt;Zhangshan 80 &lt;p&gt;Lishi 59 &lt;p&gt;Wangwu 50 &lt;p&gt;Songquan 69 &lt;p&gt;&lt;b&gt;while((select &lt;/b&gt;&lt;b&gt;min&lt;/b&gt;&lt;b&gt;(score) from tb_table)&amp;lt;&lt;/b&gt;&lt;b&gt;60&lt;/b&gt;&lt;b&gt;)&lt;/b&gt; &lt;p&gt;&lt;b&gt;begin&lt;/b&gt; &lt;p&gt;&lt;b&gt;update tb_table set score &lt;/b&gt;&lt;b&gt;=&lt;/b&gt;&lt;b&gt;score*&lt;/b&gt;&lt;b&gt;1.01&lt;/b&gt;&lt;b&gt; &lt;/b&gt; &lt;p&gt;&lt;b&gt;where score&lt;/b&gt;&lt;b&gt;&amp;lt;60&lt;/b&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;if (select &lt;/b&gt;&lt;b&gt;min&lt;/b&gt;&lt;b&gt;(score) from tb_table)&lt;/b&gt;&lt;b&gt;&amp;gt;60&lt;/b&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;break&lt;/b&gt; &lt;p&gt;&lt;b&gt;else&lt;/b&gt; &lt;p&gt;&lt;b&gt;continue&lt;/b&gt; &lt;p&gt;&lt;b&gt;end&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862955"&gt;&lt;b&gt;数据开发&lt;/b&gt;&lt;/a&gt;&lt;b&gt;-经典&lt;/b&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862956"&gt;&lt;b&gt;1.按姓氏笔画排序:&lt;/b&gt;&lt;br&gt;Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862957"&gt;&lt;b&gt;2.数据库加密:&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;select encrypt('原始密码')&lt;br&gt;select pwdencrypt('原始密码')&lt;br&gt;select pwdcompare('原始密码','加密后密码') = 1--相同；否则不相同 encrypt('原始密码')&lt;br&gt;select pwdencrypt('原始密码')&lt;br&gt;select pwdcompare('原始密码','加密后密码') = 1--相同；否则不相同 &lt;p&gt;&lt;a name="_Toc237862958"&gt;&lt;b&gt;3.取回表中字段:&lt;br&gt;&lt;/b&gt;declare @list varchar(1000),&lt;br&gt;@sql nvarchar(1000) &lt;br&gt;select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'&lt;br&gt;set @sql='select '+right(@list,len(@list)-1)+' from 表A' &lt;br&gt;exec (@sql)&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862959"&gt;&lt;b&gt;4.查看硬盘分区:&lt;br&gt;EXEC master..xp_fixeddrives&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862960"&gt;&lt;b&gt;5.比较A,B表是否相等:&lt;br&gt;&lt;/b&gt;if (select checksum_agg(binary_checksum(*)) from A)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select checksum_agg(binary_checksum(*)) from B)&lt;br&gt;print '相等'&lt;br&gt;else&lt;br&gt;print '不相等'&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862961"&gt;&lt;b&gt;6.杀掉所有的事件探察器进程:&lt;br&gt;&lt;/b&gt;DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses&lt;br&gt;WHERE program_name IN('SQL profiler',N'SQL 事件探查器')&lt;br&gt;EXEC sp_msforeach_worker '?&lt;/a&gt;' &lt;p&gt;&lt;a name="_Toc237862962"&gt;&lt;b&gt;7.&lt;/b&gt;&lt;/a&gt;&lt;b&gt;记录搜索&lt;/b&gt;&lt;b&gt;:&lt;br&gt;&lt;/b&gt;&lt;b&gt;开头到&lt;/b&gt;&lt;b&gt;N&lt;/b&gt;&lt;b&gt;条记录&lt;/b&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;Select Top N * From 表&lt;br&gt;-------------------------------&lt;br&gt;&lt;b&gt;N&lt;/b&gt;&lt;b&gt;到&lt;/b&gt;&lt;b&gt;M&lt;/b&gt;&lt;b&gt;条记录&lt;/b&gt;&lt;b&gt;(&lt;/b&gt;&lt;b&gt;要有主索引&lt;/b&gt;&lt;b&gt;ID)&lt;br&gt;&lt;/b&gt;Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID&amp;nbsp;&amp;nbsp; Desc&lt;br&gt;----------------------------------&lt;br&gt;&lt;b&gt;N&lt;/b&gt;&lt;b&gt;到结尾记录&lt;/b&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;Select Top N * From 表 Order by ID Desc&lt;br&gt;&lt;b&gt;案例&lt;br&gt;&lt;/b&gt;&lt;b&gt;例如&lt;/b&gt;&lt;b&gt;1：一张表有一万多条记录，表的第一个字段 RecID 是自增长字段， 写一个SQL语句， 找出表的第&lt;/b&gt;&lt;b&gt;31&lt;/b&gt;&lt;b&gt;到第&lt;/b&gt;&lt;b&gt;40&lt;/b&gt;&lt;b&gt;个记录。&lt;/b&gt; &lt;p&gt;select top 10 recid from A where recid not in(select top 30 recid from A) &lt;p&gt;分析：如果这样写会产生某些问题，如果recid在表中存在逻辑索引。 &lt;p&gt;select top 10 recid from A where……是从索引中查找，而后面的select top 30 recid from A则在数据表中查找，这样由于索引中的顺序有可能和数据表中的不一致，这样就导致查询到的不是本来的欲得到的数据。 &lt;p&gt;&lt;b&gt;解决方案&lt;/b&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;1， &lt;/b&gt;&lt;b&gt;用&lt;/b&gt;&lt;b&gt;order by &lt;/b&gt;select top 30 recid from A order by ricid &lt;b&gt;如果该字段不是自增长，就会出现问题&lt;/b&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;2， &lt;/b&gt;&lt;b&gt;在那个子查询中也加条件：&lt;/b&gt;select top 30 recid from A where recid&amp;gt;-1&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;例2&lt;/b&gt;&lt;b&gt;：查询表中的最后以条记录，并不知道这个表共有多少数据,&lt;/b&gt;&lt;b&gt;以及表结构。&lt;br&gt;set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)'&lt;/b&gt; &lt;p&gt;&lt;b&gt;print @s exec sp_executesql @s&lt;/b&gt; &lt;p&gt;&lt;a name="_Toc237862963"&gt;&lt;b&gt;9：获取当前数据库中的所有用户表&lt;/b&gt;&lt;br&gt;select Name from sysobjects where xtype='u' and status&amp;gt;=0&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862964"&gt;&lt;b&gt;10：获取某一个表的所有字段&lt;br&gt;&lt;/b&gt;select name from syscolumns where id=object_id('表名')&lt;/a&gt; &lt;p&gt;select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名') &lt;p&gt;两种方式的效果相同 &lt;p&gt;&lt;a name="_Toc237862965"&gt;&lt;b&gt;11：查看与某一个表相关的视图、存储过程、函数&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%' &lt;p&gt;&lt;a name="_Toc237862966"&gt;&lt;b&gt;12：查看当前数据库中所有存储过程&lt;br&gt;&lt;/b&gt;select name as 存储过程名称 from sysobjects where xtype='P'&lt;/a&gt; &lt;p&gt;&lt;a name="_Toc237862967"&gt;&lt;b&gt;13：查询用户创建的所有数据库&lt;/b&gt;&lt;/a&gt;&lt;br&gt;select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')&lt;br&gt;或者&lt;br&gt;select dbid, name AS DB_NAME from master..sysdatabases where sid &amp;lt;&amp;gt; 0x01 &lt;p&gt;&lt;a name="_Toc237862968"&gt;&lt;b&gt;14：查询某一个表的字段和数据类型&lt;br&gt;&lt;/b&gt;&lt;/a&gt;select column_name,data_type from information_schema.columns&lt;br&gt;where table_name = '表名' &lt;p&gt;&lt;a name="_Toc237862969"&gt;&lt;b&gt;15：不同服务器数据库之间的数据操作&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;--创建链接服务器 &lt;/b&gt; &lt;p&gt;exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '  &lt;p&gt;exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '  &lt;p&gt;--查询示例 &lt;p&gt;select * from ITSV.数据库名.dbo.表名 &lt;p&gt;--导入示例 &lt;p&gt;select * into 表 from ITSV.数据库名.dbo.表名 &lt;p&gt;&lt;b&gt;--以后不再使用时删除链接服务器 &lt;/b&gt; &lt;p&gt;exec sp_dropserver 'ITSV ', 'droplogins '  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;--连接远程/局域网数据&lt;/b&gt;(openrowset/openquery/opendatasource)  &lt;p&gt;--1、openrowset  &lt;p&gt;--查询示例 &lt;p&gt;select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)  &lt;p&gt;--生成本地表 &lt;p&gt;select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)  &lt;p&gt;--把本地表导入远程表 &lt;p&gt;insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)  &lt;p&gt;select *from 本地表 &lt;p&gt;--更新本地表 &lt;p&gt;update b  &lt;p&gt;set b.列A=a.列A  &lt;p&gt;from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b  &lt;p&gt;on a.column1=b.column1  &lt;p&gt;--openquery用法需要创建一个连接 &lt;p&gt;--首先创建一个连接创建链接服务器  &lt;p&gt;exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '  &lt;p&gt;--查询 &lt;p&gt;select *  &lt;p&gt;FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')  &lt;p&gt;--把本地表导入远程表 &lt;p&gt;insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')  &lt;p&gt;select * from 本地表 &lt;p&gt;--更新本地表 &lt;p&gt;update b  &lt;p&gt;set b.列B=a.列B  &lt;p&gt;FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a &lt;p&gt;inner join 本地表 b on a.列A=b.列A  &lt;p&gt;--3、opendatasource/openrowset  &lt;p&gt;SELECT *  &lt;p&gt;FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta  &lt;p&gt;--把本地表导入远程表 &lt;p&gt;insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 &lt;p&gt;select * from 本地表 &lt;p&gt;&lt;a name="_Toc237862970"&gt;&lt;strong&gt;SQL Server基本函数&lt;/strong&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;SQL Server基本函数 &lt;p&gt;&lt;a name="_Toc237862971"&gt;&lt;b&gt;1.字符串函数 &lt;/b&gt;&lt;/a&gt;长度与分析用 &lt;p&gt;&lt;b&gt;1,datalength&lt;/b&gt;(Char_expr) 返回字符串包含字符数,但不包含后面的空格&lt;br&gt;&lt;b&gt;2,substring&lt;/b&gt;(expression,start,length) 取子串，字符串的下标是从“1”，start为起始位置，length为字符串长度，实际应用中以len(expression)取得其长度&lt;br&gt;&lt;b&gt;3,right&lt;/b&gt;(char_expr,int_expr) 返回字符串右边第int_expr个字符，还用&lt;b&gt;left&lt;/b&gt;于之相反&lt;br&gt;&lt;b&gt;4,isnull( &lt;/b&gt;&lt;i&gt;check&lt;/i&gt;&lt;b&gt;_&lt;/b&gt;&lt;i&gt;expression &lt;/i&gt;&lt;b&gt;,&lt;/b&gt; &lt;i&gt;replacement_value &lt;/i&gt;&lt;b&gt;)&lt;/b&gt;如果check_expression為空，則返回replacement_value的值，不為空，就返回check_expression字符操作类  &lt;p&gt;&lt;b&gt;5,Sp_addtype&lt;/b&gt; 自定義數據類型&lt;br&gt;例如：&lt;code&gt;EXEC sp_addtype birthday, datetime, 'NULL'&lt;/code&gt;&lt;pre&gt;&lt;code&gt;&lt;b&gt;6,set nocount {on|off}&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据，则该设置由于大量减少了网络流量，因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置，而不是在分析时设置。&lt;/pre&gt;&lt;pre&gt;SET NOCOUNT 为 ON 时，不返回计数（表示受 Transact-SQL 语句影响的行数）。&lt;br&gt;&#xD;
SET NOCOUNT 为 OFF 时，返回计数&lt;/pre&gt;&lt;pre&gt;&lt;a name="_Toc237862972"&gt;&lt;code&gt;&lt;b&gt;常识&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;code&gt;&lt;b&gt;&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;b&gt;在&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;SQL查询中：&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;from&lt;/b&gt;&lt;/code&gt;&lt;code&gt;后最多可以跟多少张表或视图：&lt;/code&gt;&lt;code&gt;&lt;b&gt;256&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;b&gt;在&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;SQL&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;语句中出现 &lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;Order by&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;,查询时，&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;先排序，后取&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;b&gt;在&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;SQL&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;中，一个字段的最大容量是&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;8000&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;，而对于&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;nvarchar(4000)&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;,由于&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;nvarchar&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;是&lt;/b&gt;&lt;/code&gt;&lt;code&gt;&lt;b&gt;Unicode码。&amp;nbsp; &lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;a name="_Toc237862973"&gt;&lt;code&gt;&lt;b&gt;SQLServer2000同步复制技术实现步骤&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;code&gt;&lt;b&gt;&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;a name="_Toc237862974"&gt;&lt;code&gt;一、 预备工作&lt;/code&gt;&lt;/a&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--管理工具&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--计算机管理&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--用户和组&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--右键用户&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--新建用户&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--建立一个隶属于administrator组的登陆windows的用户（SynUser）&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;我的电脑&lt;/code&gt;&lt;code&gt;--D:\ 新建一个目录,名为: PUB&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--右键这个新建的目录&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--属性--共享&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--选择"共享该文件夹"&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser) 具有对该文件夹的所有权限&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--确定&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;开始&lt;/code&gt;&lt;code&gt;--程序--管理工具--服务&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--右键SQLSERVERAGENT&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--属性--登陆--选择"此账户"&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--输入或者选择第一步中创建的windows登录用户名（SynUser）&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"密码"中输入该用户的密码&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;企业管理器&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--右键SQL实例--属性&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--安全性--身份验证&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--选择"SQL Server 和 Windows"&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--确定&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;5.在发布服务器和订阅服务器上互相注册&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;企业管理器&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--右键SQL Server组&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--新建SQL Server注册...&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--下一步--连接使用,选择第二个"SQL Server身份验证"&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--下一步--输入用户名和密码（SynUser）&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--下一步--选择SQL Server组,也可以创建一个新组&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--下一步--完成&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;6.对于只能用IP,不能用计算机名的,为其注册服务器别名（此步在实施中没用到）&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt; (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;开始&lt;/code&gt;&lt;code&gt;--程序--Microsoft SQL Server--客户端网络实用工具&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--别名--添加&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--网络库选择"tcp/ip"--服务器别名输入SQL服务器名&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--连接参数--服务器名称中输入SQL服务器ip地址&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;a name="_Toc237862975"&gt;&lt;code&gt;二、 正式配置&lt;/code&gt;&lt;/a&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;1、配置发布服务器&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;打开企业管理器，在发布服务器（&lt;/code&gt;&lt;code&gt;B、C、D）上执行以下步骤:&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器（选择自己）&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(3) [下一步] 设置快照文件夹&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;采用默认&lt;/code&gt;&lt;code&gt;\\servername\Pub&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(4) [下一步] 自定义配置 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;可以选择&lt;/code&gt;&lt;code&gt;:是,让我设置分发数据库属性启用发布服务器或设置发布设置&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;否&lt;/code&gt;&lt;code&gt;,使用下列默认设置（推荐）&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(5) [下一步] 设置分发数据库名称和位置 采用默认值&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(6) [下一步] 启用发布服务器 选择作为发布的服务器&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;(7) [下一步] 选择需要发布的数据库和发布类型&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(8) [下一步] 选择注册订阅服务器&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(9) [下一步] 完成配置&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;2、创建出版物&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;发布服务器&lt;/code&gt;&lt;code&gt;B、C、D上&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(2)选择要创建出版物的数据库，然后单击[创建发布]&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;SQLSERVER允许在不同的数据库如 orACLE或ACCESS之间进行数据复制。&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;但是在这里我们选择运行&lt;/code&gt;&lt;code&gt;"SQL SERVER 2000"的数据库服务器&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;注意&lt;/code&gt;&lt;code&gt;: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(6)选择发布名称和描述&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(7)自定义发布属性 向导提供的选择:&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;是 我将自定义数据筛选&lt;/code&gt;&lt;code&gt;,启用匿名订阅和或其他自定义属性&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;否 根据指定方式创建发布 （建议采用自定义的方式）&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(8)[下一步] 选择筛选发布的方式 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(9)[下一步] 可以选择是否允许匿名订阅&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;方法&lt;/code&gt;&lt;code&gt;: [工具]-&amp;gt;[复制]-&amp;gt;[配置发布、订阅服务器和分发的属性]-&amp;gt;[订阅服务器] 中添加&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;否则在订阅服务器上请求订阅时会出现的提示&lt;/code&gt;&lt;code&gt;:改发布不允许匿名订阅&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;如果仍然需要匿名订阅则用以下解决办法&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;[企业管理器]-&amp;gt;[复制]-&amp;gt;[发布内容]-&amp;gt;[属性]-&amp;gt;[订阅选项] 选择允许匿名请求订阅&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(10)[下一步] 设置快照 代理程序调度&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(11)[下一步] 完成配置&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;有数据&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;srv1.库名..author有字段:id,name,phone, &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;srv2.库名..author有字段:id,name,telphone,adress &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;要求：&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;srv1.库名..author增加记录则srv1.库名..author记录增加 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;srv1.库名..author的phone字段更新，则srv1.库名..author对应字段telphone更新 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--*/ &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--大致的处理步骤 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip' &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码' &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;go&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;。我的电脑&lt;/code&gt;&lt;code&gt;--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;go &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--然后创建一个作业定时调用上面的同步处理存储过程就行了 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;企业管理器&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--管理 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--SQL Server代理 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--右键作业 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--新建作业 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"常规"项中输入作业名称 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"步骤"项 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--新建 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"步骤名"中输入步骤名 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"类型"中选择"Transact-SQL 脚本(TSQL)" &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"数据库"选择执行命令的数据库 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"命令"中输入要执行的语句: exec p_process &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--确定 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"调度"项 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--新建调度 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"名称"中输入调度名称 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--"调度类型"中选择你的作业执行安排 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--如果选择"反复出现" &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--点"更改"来设置你的时间安排 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;然后将&lt;/code&gt;&lt;code&gt;SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;设置方法&lt;/code&gt;&lt;code&gt;: &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;我的电脑&lt;/code&gt;&lt;code&gt;--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--3.实现同步处理的方法2,定时同步 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--在srv1中创建如下的同步处理存储过程 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;create proc p_process &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;as &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--更新修改过的数据 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;update b set name=i.name,telphone=i.telphone &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;from srv2.库名.dbo.author b,author i &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;where b.id=i.id and&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;(b.name &amp;lt;&amp;gt; i.name or b.telphone &amp;lt;&amp;gt; i.telphone) &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--插入新增的数据 &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;insert srv2.库名.dbo.author(id,name,telphone) &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;select id,name,telphone from author i &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;where not exists( &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;select * from srv2.库名.dbo.author where id=i.id) &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;--删除已经删除的数据(如果需要的话) &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;delete b &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;from srv2.库名.dbo.author b &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;where not exists( &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;select * from author where id=b.id)&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;go&lt;code&gt;&lt;b&gt;&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2308071.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308071.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308036.html</id><title type="text">MSChart使用做折线图饼图(转）</title><summary type="text">首先当然需要下载MSChart 下载地址 而且微软官方有个很不错的实例代码可以帮助学习使用MSChart 下载地址,当然不用我说.大家也知道的.需要NET Framework 3.5以及配合VS2008 sp1来使用了,至于vs2010好像还没有发现MSChart ,希望有知道的朋友给点帮助. 安装完MSChart后 在vs2008报表一栏里会出现MSChart控件..二话不说 拖到页面.自...</summary><published>2011-12-30T13:37:00Z</published><updated>2011-12-30T13:37:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308036.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308036.html"/><content type="html">&lt;p&gt;首先当然需要下载MSChart &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1D69CE13-E1E5-4315-825C-F14D33A303E9&amp;amp;displaylang=en"&gt;下载地址&lt;/a&gt; 而且微软官方有个很不错的实例代码可以帮助学习使用MSChart &lt;a href="http://files.cnblogs.com/xiaogangqq123/ChartWebSamples.rar"&gt;下载地址&lt;/a&gt;,当然不用我说.大家也知道的.需要NET Framework 3.5以及配合VS2008 sp1来使用了,至于vs2010好像还没有发现MSChart ,希望有知道的朋友给点帮助.  &lt;p&gt;&lt;strong&gt;　　安装完&lt;/strong&gt;&lt;strong&gt;MSChart&lt;/strong&gt;&lt;strong&gt;后&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;在&lt;/strong&gt;&lt;strong&gt;vs2008&lt;/strong&gt;&lt;strong&gt;报表一栏里会出现&lt;/strong&gt;&lt;strong&gt;MSChart&lt;/strong&gt;&lt;strong&gt;控件&lt;/strong&gt;&lt;strong&gt;..&lt;/strong&gt;&lt;strong&gt;二话不说&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;拖到页面&lt;/strong&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;strong&gt;自动生成如下代码&lt;/strong&gt;&lt;strong&gt;:&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112090813549022.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112090813541596.gif" width="11" height="16"&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112090813551695.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112090813567094.gif" width="11" height="16"&gt;&lt;/a&gt;代码  &lt;p&gt;&amp;lt;asp:Chart ID="Chart1" runat="server"&amp;gt;&lt;br&gt;&amp;lt;Series&amp;gt;&lt;br&gt;&amp;lt;asp:Series Name="Series1"&amp;gt;&lt;br&gt;&amp;lt;/asp:Series&amp;gt;&lt;br&gt;&amp;lt;/Series&amp;gt;&lt;br&gt;&amp;lt;ChartAreas&amp;gt;&lt;br&gt;&amp;lt;asp:ChartArea Name="ChartArea1"&amp;gt;&lt;br&gt;&amp;lt;/asp:ChartArea&amp;gt;&lt;br&gt;&amp;lt;/ChartAreas&amp;gt;&lt;br&gt;&amp;lt;/asp:Chart&amp;gt;  &lt;p&gt;相信在你们看过微软的实例后对这些属性会有一些了解滴..  &lt;p&gt;然后进入正题,本文也主要介绍 MSChart的 折线图，圆饼图,和柱状图, 因为这三种本人感觉是最常用的.  &lt;p&gt;对于这三种用MSChart来实现的话本人感觉比较困难的就是数据绑定带来的麻烦,因为在我们平时使用的时候基本都是动态的数据,  &lt;p&gt;而微软实例基本都是写死在页面上的数据, 而且网上这方面资料也比较少,只能自己动手实践啦.  &lt;p&gt;先介绍几种MSChart的数据绑定方式,  &lt;p&gt;第一种,也是最通俗的一种  &lt;p&gt;Chart1.DataSource = GetData.GetChartData();&lt;br&gt;Chart1.Series["ChartArea1"].XValueMember = "home";&lt;br&gt;Chart1.Series["ChartArea1"].YValueMembers = "num1";  &lt;p&gt;第二种往后都是通过List的集合形式绑定数据,这里就用变量list来代替了.一些变量都是对应实体类的名称当然也对应数据库字段  &lt;p&gt;Chart1.DataBindTable(list, "home");  &lt;p&gt;"home"是 x轴坐标  &lt;p&gt;第三种,home 分组,Time X轴坐标,num1 y轴坐标  &lt;p&gt;Chart1.DataBindCrossTable(list, "home", "Time", "num1", "Label=num1,ToolTip=num1");  &lt;p&gt;第三种,折线图绑定方式  &lt;p&gt;Chart1.Series[0].Points.DataBind(list, "home", "num1", "Label=num1,ToolTip=num1");  &lt;p&gt;第四种,折线图绑定方式  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112090813575208.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001[1]" border="0" alt="clip_image001[1]" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112090813571370.gif" width="11" height="16"&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112090813589484.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[1]" border="0" alt="clip_image002[1]" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111209081359422.gif" width="11" height="16"&gt;&lt;/a&gt;代码  &lt;p&gt;Chart1.DataBindCrossTable(list, "home", "Time", "num1", "Label=num1,ToolTip=num1");&lt;br&gt;//绘制线条&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MarkerStyle marker = MarkerStyle.Square;&lt;br&gt;foreach (Series ser in Chart1.Series)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.ShadowOffset = 1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.BorderWidth = 2;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.ChartType = SeriesChartType.Line;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.MarkerSize = 12;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.MarkerStyle = marker;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.MarkerBorderColor = Color.FromArgb(64, 64, 64);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.Font = new Font("Trebuchet MS", 8, FontStyle.Regular);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; marker++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;p&gt;第五种:  &lt;p&gt;Chart1.Series["Series1"].Points.DataBindXY(list, "home", list, "num1");  &lt;p&gt;我所了解的就这么几种了,有朋友知道有更好的绑定方式不妨贴上代码来.  &lt;p&gt;下面介绍下MSChart下的柱形图  &lt;p&gt;常用的属性这篇博客都有介绍,在这里我就不罗嗦了..&lt;a href="http://www.cnblogs.com/wenjl520/archive/2009/05/16/1458461.html"&gt;http://www.cnblogs.com/wenjl520/archive/2009/05/16/1458461.html&lt;/a&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111230213648909.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001[2]" border="0" alt="clip_image001[2]" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302136504172.gif" width="11" height="16"&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302136542093.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[2]" border="0" alt="clip_image002[2]" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302136554700.gif" width="11" height="16"&gt;&lt;/a&gt;代码  &lt;p&gt;//是否启用3D显示&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;&lt;br&gt;//显示类型,可以是柱形 折线等等&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.Series[0].ChartType = SeriesChartType.Line;&lt;br&gt;//// Draw as 3D Cylinder&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.Series[0]["DrawingStyle"] = "Cylinder";&lt;br&gt;//像素点见宽度&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.Series[0]["PointWidth"] = "0.8";&lt;br&gt;//是否显示数值&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.Series[0].IsValueShownAsLabel = true;&lt;br&gt;//X轴数据显示间隔&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.ChartAreas[0].AxisX.Interval = 1;&lt;br&gt;//直角坐标显示,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.ChartAreas[0].Area3DStyle.IsRightAngleAxes = false;&lt;br&gt;//是否群集在一起&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.ChartAreas[0].Area3DStyle.IsClustered = false;&lt;br&gt;//转动X轴角度&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.ChartAreas[0].Area3DStyle.Inclination = 40;&lt;br&gt;//转动Y轴角度&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.ChartAreas[0].Area3DStyle.Rotation = 20;&lt;br&gt;foreach (Series ser in Chart1.Series)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;//柱形宽度&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser["PixelPointWidth"] = "40";&lt;br&gt;//像素点深度&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser["PixelPointDepth"] = "80";&lt;br&gt;//像素点间隙深度&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser["PixelPointGapDepth"] = "10";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;这些属性都是设置MSChart的外观样式的属性,大家可以尝试修改试试,  &lt;p&gt;当然主要的是绑定数据了.所以在调用这些属性时先用上文介绍的几种绑定方式绑定数据.  &lt;p&gt;有些属性可能在3D模式下失效或者在2D模式下失效,这是正常现象,  &lt;p&gt;效果图:  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111230213700802.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137074418.jpg" width="244" height="101"&gt;&lt;/a&gt;  &lt;p&gt;折线图:  &lt;p&gt;属性同上..有些属性会在折线图下失效,  &lt;p&gt;效果图:  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137129930.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137144305.jpg" width="244" height="102"&gt;&lt;/a&gt;  &lt;p&gt;圆饼图:  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137153848.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001[3]" border="0" alt="clip_image001[3]" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137167535.gif" width="11" height="16"&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137211934.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[3]" border="0" alt="clip_image002[3]" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137225937.gif" width="11" height="16"&gt;&lt;/a&gt;代码  &lt;p&gt;IList&amp;lt;ChartModel&amp;gt; list = GetData.GetChartDataListByPie();&lt;br&gt;//数值显示百分比形式&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.Series["Series1"].Label = "#PERCENT{P}";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.Series["Series1"].Points.DataBind(list, "home", "num1", "LegendText=home,YValues=num1,ToolTip=num1");&lt;br&gt;&amp;nbsp;&amp;nbsp; Chart1.Series["Series1"].ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Pie;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chart1.Series["Series1"].ToolTip = "#LEGENDTEXT: #VAL{C} million";&lt;br&gt;&amp;nbsp; Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137238295.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302137257903.jpg" width="244" height="154"&gt;&lt;/a&gt;  &lt;p&gt;这个比较简单吧..  &lt;p&gt;主要是这里的 Chart1.Series["Series1"].Points.DataBind(list, "home", "num1", "LegendText=home,YValues=num1,ToolTip=num1");  &lt;p&gt;LegendText整了我半天.这个是显示右侧说明的,开始老是显示不出来,而且还不统一.  &lt;p&gt;Legend其实就是右侧显示的说明,但是做过的朋友会发现在柱形图还有折线图如果页面指定了一个&amp;lt;Lengend&amp;gt;&amp;lt;/Lengend&amp;gt;标签的话,会多显示一个,所以需要在执行绑定的时候  &lt;p&gt;写上这么一段代码 Chart1.Series.Clear();  &lt;p&gt;MSChart可不止可以制作这三种图形,我只是觉得这三种比较常用.想在圆饼图中合并几项成显示成其他,搞了半天没搞出来,郁闷,谁知道告诉下.  &lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2308036.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308036.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308032.html</id><title type="text">在Windows XP环境中配置OPC服务器时的设置方式</title><summary type="text">在Windows XP环境中配置OPC服务器时的设置方式-1 1、运行DCOMCNFG进入DCOM设置（在XP中称为组件服务） 1．1、组件服务配置界面 2、打开组件服务\计算机\我的电脑，鼠标右键设置属性 3、注意默认属性的设置 4、注意默认COM安全性设置，设置访问权限和启动权限 4．1、在访问权限编辑界面中添加Everyone 设置允许访问权限。 4．2...</summary><published>2011-12-30T13:35:00Z</published><updated>2011-12-30T13:35:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308032.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308032.html"/><content type="html">&lt;p&gt;&lt;b&gt;在&lt;/b&gt;&lt;b&gt;Windows XP&lt;/b&gt;&lt;b&gt;环境中配置&lt;/b&gt;&lt;b&gt;OPC&lt;/b&gt;&lt;b&gt;服务器时的设置方式&lt;/b&gt;&lt;b&gt;-1 &lt;/b&gt; &lt;p&gt;1、运行DCOMCNFG进入DCOM设置（在XP中称为组件服务）  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302132467163.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302132475900.jpg" width="244" height="120"&gt;&lt;/a&gt;  &lt;p&gt;1．1、组件服务配置界面  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302132567696.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302132571383.jpg" width="244" height="184"&gt;&lt;/a&gt;  &lt;p&gt;2、打开组件服务\计算机\我的电脑，鼠标右键设置属性  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133017419.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133033963.jpg" width="244" height="184"&gt;&lt;/a&gt;  &lt;p&gt;3、注意默认属性的设置  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133075505.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133138673.jpg" width="237" height="244"&gt;&lt;/a&gt;  &lt;p&gt;4、注意默认COM安全性设置，设置访问权限和启动权限  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133196519.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133232488.jpg" width="237" height="244"&gt;&lt;/a&gt;  &lt;p&gt;4．1、在访问权限编辑界面中添加Everyone 设置允许访问权限。  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133261489.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133287161.jpg" width="216" height="244"&gt;&lt;/a&gt;  &lt;p&gt;4．2、在启动权限编辑界面中添加Everyone 设置允许启动权限。  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133309900.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133326543.jpg" width="216" height="244"&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;在WINDOWS XP SP2系统中使用OPC的DCOM配置方法&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;在&lt;/strong&gt;&lt;strong&gt;WINDOWS XP SP2&lt;/strong&gt;&lt;strong&gt;系统中使用&lt;/strong&gt;&lt;strong&gt;OPC&lt;/strong&gt;&lt;strong&gt;的&lt;/strong&gt;&lt;strong&gt;DCOM&lt;/strong&gt;&lt;strong&gt;配置方法&lt;/strong&gt;&lt;strong&gt; V1.0&lt;/strong&gt;  &lt;p&gt;（Using OPC via DCOM with XP SP2）（模拟软件的客户端有问题，如果连接上，读不到数据，有可能已经成功配置，可能是OPC客户端的问题，请尝试其他客户端）  &lt;p&gt;模拟软件下载地址：&lt;a href="http://www.brsbox.com/filebox/down/fc/0b6339e9f6c9da114666d5fe6a9d33ed"&gt;http://www.brsbox.com/filebox/down/fc/0b6339e9f6c9da114666d5fe6a9d33ed&lt;/a&gt;  &lt;p&gt;大多数OPC Clients和OPC Servers利用DCOM通过网络进行通信。在XP SP2中，经由DCOM的OPC通信是默认关闭的，本文讨论了当使用XP SP2时重建OPC通信的必要设置方法。  &lt;p&gt;由于OPC使用的回调方法使得OPC Client转变为DCOM server同时使OPC Server转变为一个DCOM client，所以本文中提供的配置方法应在包含有OPC Server和OPC Client的客户端节点上分别进行设置。  &lt;p&gt;&lt;strong&gt;配置&lt;/strong&gt;&lt;strong&gt;WINDOWS &lt;/strong&gt;&lt;strong&gt;防火&lt;/strong&gt;&lt;strong&gt;墙&lt;/strong&gt;  &lt;p&gt;WINDOWS防火墙是基于“例外”的，也就是默认情况下，防火墙将阻止外部“未被请求”的连接通过网络，而管理员可以在规则之外设置特定的应用程序或端口来响应外部“未被请求”的连接。  &lt;p&gt;防火墙的例外可被归入两种层次的情况，一是应用程序层次，二是端口与协议层次。前者可设置特定的程序来对“未被请求”的连接进行响应，后者可设置特定的TCP或UDP端口来允许相应的通信。为了使OPC程序可以通过DCOM正常工作，必须在这两个层次上都进行设置。  &lt;p&gt;&lt;strong&gt;防火墙的配置过程如下&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;  &lt;p&gt;1.　为了给系统提供必须的保护，WINDOWS防火墙是默认启用的。（个人）不推荐关闭WINDOWS防火墙，若通信连接失败，在调试过程中可以暂时关闭防火墙以确实问题是否是由防火墙所引起。如若确定永久关闭防火墙，下面所述关于防火墙的设置均可忽略。&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133438746.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133464441.jpg" width="225" height="244"&gt;&lt;/a&gt;  &lt;p&gt;2.　进入WINDOWS控制面板，双击“WINDOWS防火墙”图标，打开“WINDOWS防火墙”设置对话框，选中“例外”选项卡，把相应OPC Client和Server程序添加进例外列表。同时添加Microsoft Management Console (mmc.exe 在Windows\System32目录下)和OPC 应用程序OPCEnum (opcenum.exe 在Windows\System32 目录下)　到例外列表中。最后确保“文件和打印机共享”也被选中在例外列表中。  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133495818.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133521971.jpg" width="225" height="244"&gt;&lt;/a&gt;  &lt;p&gt;3.　添加TCP 135端口。建立DCOM通信和对外来请求进行响应需要用到TCP 135端口。在“WINDOWS防火墙”“例外”选项卡中，点击“添加端口”按钮。在“添加端口”对话框中进行设置，如下图所示。  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302133595238.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134008435.jpg" width="225" height="244"&gt;&lt;/a&gt;  &lt;p&gt;&lt;b&gt;DCOM &lt;/b&gt;&lt;b&gt;配置　&lt;/b&gt;  &lt;p&gt;WINDWOS XP SP2在DCOM安全方面进行了一些增强。在XP SP2中，若要通过网络使用OPC，应该注意到以下两个方面的问题：一是用户可以通过“激活和访问权限”对话框对使用DCOM的应用程序的“限制权限”进行配置；二是在“激活和访问权限”中定义的每个用户，其本地和远程访问权限可以进行分别配置。  &lt;p&gt;关于“激活和访问权限”：启动权限定义了谁可以本地或远程激活（或启动）基于COM的应用程序（比如OPC Server程序）；访问权限定义了谁可以对已经启动起来的程序进行访问。  &lt;p&gt;默认情况下，WINDOWS XP SP2不允许经由网络的OPC通信。为了使基于DCOM的OPC应用程序可以通过网络工作，用户应该被给予OPC Server和OPC Client的远程激活和访问权限。  &lt;p&gt;&lt;b&gt;WINDOWS XP SP2&lt;/b&gt;&lt;b&gt;下&lt;/b&gt;&lt;b&gt;DCOM&lt;/b&gt;&lt;b&gt;的配置过程如下：&lt;/b&gt;  &lt;p&gt;1.　点击“开始”-&amp;gt;“运行”。输入DCOMCnfg，回车，打开“组件服务”窗口。  &lt;p&gt;2.　双击“控制台根目录”下的“组件服务”展开“组件服务”文件夹，同样方式，展开“计算机”文件夹，右键点击右侧窗口的“我的电脑”图标，点击“属性”，打开属性对话框。  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134038209.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134055866.jpg" width="244" height="184"&gt;&lt;/a&gt;  &lt;p&gt;3.　选中“COM 安全”选项卡，注意这里有4个按钮可供点击进入配置。  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134168134.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111230213422190.jpg" width="237" height="244"&gt;&lt;/a&gt;  &lt;p&gt;4.　配置访问和启动激活权限。  &lt;p&gt;4.1 “访问权限”-&amp;gt;“编辑限制(L)…”  &lt;p&gt;设置ANONYMOUS LOGON的本地访问及远程访问权限为允许。（此设置与OPCEnum.exe发挥作用有关，对于某些设置了 ‘验证等级’为‘无’以允许匿名连接的OPC Servert和OPC Client，此设置也是必须的。）  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134276815.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134327899.jpg" width="218" height="244"&gt;&lt;/a&gt;  &lt;p&gt;4.2 “启动和激活权限”-&amp;gt;“编辑限制(I)…”  &lt;p&gt;设置Everyone的远程启动和远程激活权限为允许。（注：为了安全，可建立专用于OPC通信的用户组，进行权限赋予。）  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134355655.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134394448.jpg" width="218" height="244"&gt;&lt;/a&gt;  &lt;p&gt;4.3　设置默认访问和启动激活权限。对于每个参与OPC通信的用户或组，均应赋予其本地和远程访问以及启动激活权限。若相应用户或组没有出现，则应手动添加，然后赋予权限。  &lt;p&gt;“访问权限”-&amp;gt;“编辑默认值(E)…”  &lt;p&gt;“启动和激活权限”-&amp;gt;“编辑默认值(D)…”  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134441945.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112302134462143.jpg" width="218" height="244"&gt;&lt;/a&gt;  &lt;p&gt;5.　完成以上设置后，重新启动计算机。  &lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2308032.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/30/2308032.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/13/2286058.html</id><title type="text">关于异常&amp;ldquo;The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine&amp;rdquo;的处理</title><summary type="text">我们在利用SqlBlukcopy技术倒2010 或者2007格式的文件到SqlServer 数据库的时候，会发生如下错误： 原因如下： 1.在用SQL SERVER 2005访问.xlsx文件（office2007&amp;amp;2010文件格式）时，必须用provider &amp;#39;Microsoft.ACE.OLEDB.12.0&amp;#39; 来实现。2.首先要安装AccessDatabaseEngine.exe。下载路径：...</summary><published>2011-12-13T06:23:00Z</published><updated>2011-12-13T06:23:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/13/2286058.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/13/2286058.html"/><content type="html">&lt;p&gt;我们在利用SqlBlukcopy技术倒2010 或者2007格式的文件到SqlServer 数据库的时候，会发生如下错误：&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112131422409813.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112131422439238.png" width="747" height="140"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;原因如下：&lt;/p&gt; &lt;p&gt;1.在用SQL SERVER 2005访问.xlsx文件（office2007&amp;amp;2010文件格式）时，必须用&lt;br&gt;provider 'Microsoft.ACE.OLEDB.12.0' 来实现。&lt;br&gt;2.首先要安装AccessDatabaseEngine.exe。&lt;br&gt;下载路径：http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&amp;amp;displaylang=en&lt;br&gt;3.在32位系统中可以在数据库中看见这个provider。&lt;br&gt;4.在64位系统中不能看见它，这时需调用&lt;br&gt;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe&lt;br&gt;来执行package。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;解决方案： &lt;p&gt;1、打开IIS管理器 &lt;p&gt;2、右击应用程序所在的连接池 &lt;p&gt;3、修改“启用32为应用程序”为true &lt;p&gt;&lt;a href="http://photo.blog.sina.com.cn/showpic.html#blogid=64008ed70100w651&amp;amp;url=http://s9.sinaimg.cn/orignal/64008ed7gb377f5371098"&gt;&lt;img title="关于异常鈥淭he &amp;lt;wbr&amp;gt;'Microsoft.ACE.OLEDB.12.0' &amp;lt;wbr&amp;gt;provider &amp;lt;wbr&amp;gt;is &amp;lt;wbr&amp;gt;not &amp;lt;wbr&amp;gt;registered &amp;lt;wbr&amp;gt;on &amp;lt;wbr&amp;gt;the &amp;lt;wbr&amp;gt;local &amp;lt;wbr&amp;gt;machine鈥澋拇" alt="关于异常鈥淭he &amp;lt;wbr&amp;gt;'Microsoft.ACE.OLEDB.12.0' &amp;lt;wbr&amp;gt;provider &amp;lt;wbr&amp;gt;is &amp;lt;wbr&amp;gt;not &amp;lt;wbr&amp;gt;registered &amp;lt;wbr&amp;gt;on &amp;lt;wbr&amp;gt;the &amp;lt;wbr&amp;gt;local &amp;lt;wbr&amp;gt;machine鈥澋拇" src="http://s9.sinaimg.cn/middle/64008ed7gb377f5371098&amp;amp;690"&gt;&lt;/a&gt;&lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2286058.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/13/2286058.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/12/2285409.html</id><title type="text">.NET使用NPOI组件将数据导出Excel(转）</title><summary type="text">Excel导入及导出问题产生： 从接触.net到现在一直在维护一个DataTable导出到Excel的类，时不时还会维护一个导入类。以下是时不时就会出现的问题：导出问题： 如果是asp.net，你得在服务器端装Office，几百M呢，还得及时更新它，以防漏洞，还得设定权限允许ASP.net访问COM+，听说如果导出过程中出问题可能导致服务器宕机。 Excel会把只包含数字的列进行类型转换，本来是文本型的，它非要把你转成数值型的，像身份证后三位变成000，编号000123会变成123，够智能吧，够郁闷吧。不过这些都还是可以变通解决的，在他们前边加上一个字母，让他们不只包含数字。 导出时，...</summary><published>2011-12-12T15:10:00Z</published><updated>2011-12-12T15:10:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/12/2285409.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/12/2285409.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Excel导入及导出问题产生：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　从接触.net到现在一直在维护一个DataTable导出到Excel的类，时不时还会维护一个导入类。以下是时不时就会出现的问题：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;strong style="color: red"&gt;导出问题：&lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　如果是asp.net，你得在服务器端装Office，几百M呢，还得及时更新它，以防漏洞，还得设定权限允许ASP.net访问COM+，听说如果导出过程中出问题可能导致服务器宕机。&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　Excel会把只包含数字的列进行类型转换，本来是文本型的，它非要把你转成数值型的，像身份证后三位变成000，编号000123会变成123，够智能吧，够郁闷吧。不过这些都还是可以变通解决的，在他们前边加上一个字母，让他们不只包含数字。&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　导出时，如果你的字段内容以"-"或"="开头，Excel好像把它当成了公式什么的，接下来就出错，提示：类似，保存到Sheet1的问题&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;strong style="color: red"&gt;导入问题：&lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　Excel会根据你的 Excel文件前8行分析数据类型，如果正好你前8行某一列只是数字，那它会认为你这一列就是数值型的，然后，身份证，手机，编号都转吧变成类似这样的1.42702E+17格式，日期列变成 包含日期和数字的，乱的很，可以通过改注册表让Excel分析整个表，但如果整列都是数字，那这个问题还是解决不了。&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　以上问题，一般人初次做时肯定得上网查查吧，一个问题接着另一个问题，查到你郁郁而死，还有很多问题没解决，最终感觉已经解决的不错了，但还不能保证某一天还会出个什么问题。&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用第三方开源组件导入及导出Excel的解决方案：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　偶然间发现了NPOI与MyXls，相见恨晚，害的我在Excel上浪费了那么多时间，他们俩的好处是：就是.net的自定义类库，可以直接对Excel进行读或写，而不依赖Office 的 Excel，这不管对于ASP.net或Winform都非常有利，不用担心Excel进程的释放问题，服务器安全，设置，导出，导入&amp;#8220;Excel智能识别&amp;#8221;，公式日期等问题，可以说以前的Excel问题，全都不用管了，它们可以很好的帮你解决，NPOI || MyXls == 研究几年Excel。&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　NPOI开源地址：&lt;a href="http://npoi.codeplex.com/" target="_blank"&gt;&lt;font color="#1d58d1"&gt;http://npoi.codeplex.com/&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　NPOI中文文档：&lt;a href="http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html" target="_blank"&gt;&lt;font color="#1d58d1"&gt;http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;font color="#1d58d1"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　MyXls开源地址：&lt;a href="http://sourceforge.net/projects/myxls/" target="_blank"&gt;&lt;font color="#1d58d1"&gt;http://sourceforge.net/projects/myxls/&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;font color="#1d58d1"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;div&gt;下面来两个简单入门例子：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;strong style="color: red"&gt;MyXls 快速入门例子:&lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="width: 900px" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080"&gt;1&lt;/span&gt; &lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;2&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; MyXls简单Demo，快速入门代码&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;3&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;4&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="dtSource"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;5&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strFileName"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;6&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;MyXls认为Excel的第一个单元格是：(1,1)&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;7&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;Author&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;柳永法 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://www.yongfa365.com/&lt;/span&gt;&lt;span style="color: #008000"&gt; 2010-5-8 22:21:41&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/Author&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;8&lt;/span&gt; &lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; ExportEasy(DataTable dtSource, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;9&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt; &lt;span style="color: #000000"&gt;XlsDocument xls &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; XlsDocument();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt; &lt;span style="color: #000000"&gt;Worksheet sheet &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; xls.Workbook.Worksheets.Add(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Sheet1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填充表头&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (DataColumn col &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt; &lt;span style="color: #000000"&gt;sheet.Cells.Add(&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;, col.Ordinal &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;, col.ColumnName);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填充内容&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;20&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; i &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; i &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Rows.Count; i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;21&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;22&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; j &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; j &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns.Count; j&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;23&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;24&lt;/span&gt; &lt;span style="color: #000000"&gt;sheet.Cells.Add(i &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;, j &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;, dtSource.Rows[i][j].ToString());&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;25&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;26&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;27&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;28&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;保存&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;29&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;xls.FileName &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;30&lt;/span&gt; &lt;span style="color: #000000"&gt;xls.Save();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;31&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span &gt;&lt;a onclick="copyCnblogsCode(this)" href="http://www.cnblogs.com/dwfbenben/admin/javascript:void(0);"&gt;&lt;font color="#1d58d1"&gt;复制代码&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;strong style="color: red"&gt;NPOI 快速入门例子:&lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="width: 900px" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080"&gt;1&lt;/span&gt; &lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;2&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; NPOI简单Demo，快速入门代码&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;3&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;4&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="dtSource"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;5&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strFileName"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;6&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;NPOI认为Excel的第一个单元格是：(0，0)&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;7&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;Author&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;柳永法 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://www.yongfa365.com/&lt;/span&gt;&lt;span style="color: #008000"&gt; 2010-5-8 22:21:41&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/Author&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;8&lt;/span&gt; &lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; ExportEasy(DataTable dtSource, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;9&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFWorkbook workbook &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; HSSFWorkbook();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFSheet sheet &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateSheet();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填充表头&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;HSSFRow dataRow &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.CreateRow(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (DataColumn column &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt; &lt;span style="color: #000000"&gt;dataRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;20&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;21&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填充内容&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;22&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; i &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; i &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Rows.Count; i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;23&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;24&lt;/span&gt; &lt;span style="color: #000000"&gt;dataRow &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.CreateRow(i &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;25&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; j &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; j &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns.Count; j&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;26&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;27&lt;/span&gt; &lt;span style="color: #000000"&gt;dataRow.CreateCell(j).SetCellValue(dtSource.Rows[i][j].ToString());&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;28&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;29&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;30&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;31&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;32&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;保存&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;33&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; (MemoryStream ms &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; MemoryStream())&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;34&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;35&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; (FileStream fs &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; FileStream(strFileName, FileMode.Create, FileAccess.Write))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;36&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;37&lt;/span&gt; &lt;span style="color: #000000"&gt;workbook.Write(fs);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;38&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;39&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;40&lt;/span&gt; &lt;span style="color: #000000"&gt;workbook.Dispose();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;41&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span &gt;&lt;a onclick="copyCnblogsCode(this)" href="http://www.cnblogs.com/dwfbenben/admin/javascript:void(0);"&gt;&lt;font color="#1d58d1"&gt;复制代码&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;div&gt;接下来是&lt;a href="http://www.yongfa365.com/" target="_blank"&gt;&lt;font color="#1d58d1"&gt;柳永法(yongfa365)'Blog&lt;/font&gt;&lt;/a&gt;封装的可以用在实际项目中的类，实现的功能有（仅NPOI）：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;ol&gt;&lt;li&gt;&lt;span style="color: red"&gt;支持web及winform从DataTable导出到Excel。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;生成速度很快。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;准确判断数据类型，不会出现身份证转数值等上面提到的一系列问题。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;如果单页条数大于65535时会新建工作表。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;列宽自适应。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;支持读取Excel。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;调用方便，只一调用一个静态类就OK了。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;因为测试期间发现MyXls导出速度要比NPOI慢3倍，而NPOI既能满足我们的导出需求，又能很好的满足我们的导入需求，所以只针对NPOI进行全方位功能实现及优化。&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;strong style="color: red"&gt;MyXls导出相关类：&lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="width: 900px" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;2&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Collections.Generic;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;3&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Linq;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;4&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;5&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; org.in2bits.MyXls;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;6&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; org.in2bits.MyXls.ByteUtil;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;7&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Data;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;8&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;9&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt; ExcelHelper&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; Export(DataTable dtSource, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strHeaderText, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt; &lt;span style="color: #000000"&gt;XlsDocument xls &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; XlsDocument();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt; &lt;span style="color: #000000"&gt;xls.FileName &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; DateTime.Now.ToString(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;yyyyMMddHHmmssffff&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;, System.Globalization.DateTimeFormatInfo.InvariantInfo);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt; &lt;span style="color: #000000"&gt;xls.SummaryInformation.Author &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;yongfa365&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件作者信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;xls.SummaryInformation.NameOfCreatingApplication &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;liu yongfa&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件创建程序信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;xls.SummaryInformation.LastSavedBy &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LastSavedBy&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件最后保存者信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;xls.SummaryInformation.Comments &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Comments&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件作者信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;xls.SummaryInformation.Title &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件标题信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;20&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;xls.SummaryInformation.Subject &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Subject&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加文件主题信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;21&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;xls.DocumentSummaryInformation.Company &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;company&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加文件公司信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;22&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;23&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;24&lt;/span&gt; &lt;span style="color: #000000"&gt;Worksheet sheet &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; xls.Workbook.Worksheets.Add(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Sheet1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;状态栏标题名称&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;25&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Cells cells &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.Cells;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;26&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;27&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (DataColumn col &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;28&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;29&lt;/span&gt; &lt;span style="color: #000000"&gt;Cell cell &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; cells.Add(&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;, col.Ordinal &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;, col.ColumnName);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;30&lt;/span&gt; &lt;span style="color: #000000"&gt;cell.Font.FontFamily &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; FontFamilies.Roman; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;字体&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;31&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;cell.Font.Bold &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;字体为粗体 &lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;32&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;33&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;34&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;span style="color: #000000"&gt; 填充内容&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;35&lt;/span&gt; &lt;span style="color: #000000"&gt;XF dateStyle &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; xls.NewXF();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;36&lt;/span&gt; &lt;span style="color: #000000"&gt;dateStyle.Format &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;yyyy-mm-dd&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;37&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;38&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; i &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; i &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Rows.Count; i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;39&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;40&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; j &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; j &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns.Count; j&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;41&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;42&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;43&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; rowIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; i &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;44&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; colIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; j &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;45&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; drValue &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Rows[i][j].ToString();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;46&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;47&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&lt;span style="color: #000000"&gt; (dtSource.Rows[i][j].GetType().ToString())&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;48&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;49&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.String&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;字符串类型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;50&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;cells.Add(rowIndex, colIndex, drValue);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;51&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;52&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.DateTime&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;日期类型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;53&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;DateTime dateV;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;54&lt;/span&gt; &lt;span style="color: #000000"&gt;DateTime.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; dateV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;55&lt;/span&gt; &lt;span style="color: #000000"&gt;cells.Add(rowIndex, colIndex, dateV, dateStyle);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;56&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;57&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Boolean&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;布尔型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;58&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt; boolV &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;59&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt;.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; boolV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;60&lt;/span&gt; &lt;span style="color: #000000"&gt;cells.Add(rowIndex, colIndex, boolV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;61&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;62&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Int16&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;整型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;63&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Int32&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;64&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Int64&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;65&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Byte&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;66&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; intV &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;67&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; intV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;68&lt;/span&gt; &lt;span style="color: #000000"&gt;cells.Add(rowIndex, colIndex, intV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;69&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;70&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Decimal&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;浮点型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;71&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Double&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;72&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt; doubV &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;73&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; doubV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;74&lt;/span&gt; &lt;span style="color: #000000"&gt;cells.Add(rowIndex, colIndex, doubV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;75&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;76&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.DBNull&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;空值处理&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;77&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;cells.Add(rowIndex, colIndex, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;78&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;79&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;default&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;80&lt;/span&gt; &lt;span style="color: #000000"&gt;cells.Add(rowIndex, colIndex, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;81&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;82&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;83&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;84&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;85&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;86&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;87&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;88&lt;/span&gt; &lt;span style="color: #000000"&gt;xls.FileName &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;89&lt;/span&gt; &lt;span style="color: #000000"&gt;xls.Save();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;90&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;91&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;92&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span &gt;&lt;a onclick="copyCnblogsCode(this)" href="http://www.cnblogs.com/dwfbenben/admin/javascript:void(0);"&gt;&lt;font color="#1d58d1"&gt;复制代码&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;strong style="color: red"&gt;NPOI导入导出相关类：&lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="width: 900px" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;2&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Collections.Generic;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;3&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Data;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;4&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.IO;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;5&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;6&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Web;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;7&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; NPOI;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;8&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; NPOI.HPSF;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;9&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; NPOI.HSSF;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; NPOI.HSSF.UserModel;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; NPOI.HSSF.Util;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; NPOI.POIFS;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; NPOI.Util;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt; ExcelHelper&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; DataTable导出到Excel文件&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;20&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;21&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="dtSource"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;源DataTable&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;22&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strHeaderText"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;表头文本&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;23&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strFileName"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;保存位置&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;24&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;Author&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;柳永法 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://www.yongfa365.com/&lt;/span&gt;&lt;span style="color: #008000"&gt; 2010-5-8 22:21:41&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/Author&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;25&lt;/span&gt; &lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; Export(DataTable dtSource, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strHeaderText, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;26&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;27&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; (MemoryStream ms &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Export(dtSource, strHeaderText))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;28&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;29&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; (FileStream fs &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; FileStream(strFileName, FileMode.Create, FileAccess.Write))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;30&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;31&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[] data &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; ms.ToArray();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;32&lt;/span&gt; &lt;span style="color: #000000"&gt;fs.Write(data, &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;, data.Length);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;33&lt;/span&gt; &lt;span style="color: #000000"&gt;fs.Flush();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;34&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;35&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;36&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;37&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;38&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;39&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; DataTable导出到Excel的MemoryStream&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;40&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;41&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="dtSource"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;源DataTable&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;42&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strHeaderText"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;表头文本&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;43&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;Author&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;柳永法 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://www.yongfa365.com/&lt;/span&gt;&lt;span style="color: #008000"&gt; 2010-5-8 22:21:41&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/Author&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;44&lt;/span&gt; &lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; MemoryStream Export(DataTable dtSource, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strHeaderText)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;45&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;46&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFWorkbook workbook &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; HSSFWorkbook();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;47&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFSheet sheet &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateSheet();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;48&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;49&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;span style="color: #000000"&gt; 右击文件 属性信息&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;50&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;51&lt;/span&gt; &lt;span style="color: #000000"&gt;DocumentSummaryInformation dsi &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; PropertySetFactory.CreateDocumentSummaryInformation();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;52&lt;/span&gt; &lt;span style="color: #000000"&gt;dsi.Company &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;http://www.yongfa365.com/&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;53&lt;/span&gt; &lt;span style="color: #000000"&gt;workbook.DocumentSummaryInformation &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; dsi;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;54&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;55&lt;/span&gt; &lt;span style="color: #000000"&gt;SummaryInformation si &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; PropertySetFactory.CreateSummaryInformation();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;56&lt;/span&gt; &lt;span style="color: #000000"&gt;si.Author &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;柳永法&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件作者信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;57&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;si.ApplicationName &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;NPOI测试程序&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件创建程序信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;58&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;si.LastAuthor &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;柳永法2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件最后保存者信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;59&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;si.Comments &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;说明信息&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件作者信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;60&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;si.Title &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;NPOI测试&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加xls文件标题信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;61&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;si.Subject &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;NPOI测试Demo&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;填加文件主题信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;62&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;si.CreateDateTime &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; DateTime.Now;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;63&lt;/span&gt; &lt;span style="color: #000000"&gt;workbook.SummaryInformation &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; si;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;64&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;65&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;66&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;67&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFCellStyle dateStyle &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateCellStyle();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;68&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFDataFormat format &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateDataFormat();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;69&lt;/span&gt; &lt;span style="color: #000000"&gt;dateStyle.DataFormat &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; format.GetFormat(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;yyyy-mm-dd&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;70&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;71&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;取得列宽&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;72&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;[] arrColWidth &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;[dtSource.Columns.Count];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;73&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (DataColumn item &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;74&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;75&lt;/span&gt; &lt;span style="color: #000000"&gt;arrColWidth[item.Ordinal] &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Encoding.GetEncoding(&lt;/span&gt;&lt;span style="color: #800080"&gt;936&lt;/span&gt;&lt;span style="color: #000000"&gt;).GetBytes(item.ColumnName.ToString()).Length;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;76&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;77&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; i &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; i &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Rows.Count; i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;78&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;79&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; j &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; j &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns.Count; j&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;80&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;81&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; intTemp &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Encoding.GetEncoding(&lt;/span&gt;&lt;span style="color: #800080"&gt;936&lt;/span&gt;&lt;span style="color: #000000"&gt;).GetBytes(dtSource.Rows[i][j].ToString()).Length;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;82&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (intTemp &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; arrColWidth[j])&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;83&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;84&lt;/span&gt; &lt;span style="color: #000000"&gt;arrColWidth[j] &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; intTemp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;85&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;86&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;87&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;88&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;89&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;90&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;91&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; rowIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;92&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;93&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (DataRow row &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Rows)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;94&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;95&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;span style="color: #000000"&gt; 新建表，填充表头，填充列头，样式&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;96&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (rowIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;65535&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;||&lt;/span&gt;&lt;span style="color: #000000"&gt; rowIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;97&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;98&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (rowIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;99&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;100&lt;/span&gt; &lt;span style="color: #000000"&gt;sheet &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateSheet();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;101&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;102&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;103&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;span style="color: #000000"&gt; 表头及样式&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;104&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;105&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFRow headerRow &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.CreateRow(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;106&lt;/span&gt; &lt;span style="color: #000000"&gt;headerRow.HeightInPoints &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;25&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;107&lt;/span&gt; &lt;span style="color: #000000"&gt;headerRow.CreateCell(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;).SetCellValue(strHeaderText);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;108&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;109&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFCellStyle headStyle &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateCellStyle();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;110&lt;/span&gt; &lt;span style="color: #000000"&gt;headStyle.Alignment &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; CellHorizontalAlignment.CENTER;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;111&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFFont font &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateFont();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;112&lt;/span&gt; &lt;span style="color: #000000"&gt;font.FontHeightInPoints &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;20&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;113&lt;/span&gt; &lt;span style="color: #000000"&gt;font.Boldweight &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;700&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;114&lt;/span&gt; &lt;span style="color: #000000"&gt;headStyle.SetFont(font);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;115&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;116&lt;/span&gt; &lt;span style="color: #000000"&gt;headerRow.GetCell(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;).CellStyle &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; headStyle;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;117&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;118&lt;/span&gt; &lt;span style="color: #000000"&gt;sheet.AddMergedRegion(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; Region(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;, dtSource.Columns.Count &lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;119&lt;/span&gt; &lt;span style="color: #000000"&gt;headerRow.Dispose();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;120&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;121&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;122&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;123&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;124&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;span style="color: #000000"&gt; 列头及样式&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;125&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;126&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFRow headerRow &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.CreateRow(&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;127&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;128&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;129&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFCellStyle headStyle &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateCellStyle();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;130&lt;/span&gt; &lt;span style="color: #000000"&gt;headStyle.Alignment &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; CellHorizontalAlignment.CENTER;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;131&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFFont font &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; workbook.CreateFont();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;132&lt;/span&gt; &lt;span style="color: #000000"&gt;font.FontHeightInPoints &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;10&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;133&lt;/span&gt; &lt;span style="color: #000000"&gt;font.Boldweight &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;700&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;134&lt;/span&gt; &lt;span style="color: #000000"&gt;headStyle.SetFont(font);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;135&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;136&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;137&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (DataColumn column &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;138&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;139&lt;/span&gt; &lt;span style="color: #000000"&gt;headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;140&lt;/span&gt; &lt;span style="color: #000000"&gt;headerRow.GetCell(column.Ordinal).CellStyle &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; headStyle;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;141&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;142&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;设置列宽&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;143&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;256&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;144&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;145&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;146&lt;/span&gt; &lt;span style="color: #000000"&gt;headerRow.Dispose();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;147&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;148&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;149&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;150&lt;/span&gt; &lt;span style="color: #000000"&gt;rowIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;151&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;152&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;153&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;154&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;155&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;span style="color: #000000"&gt; 填充内容&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;156&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFRow dataRow &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.CreateRow(rowIndex);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;157&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (DataColumn column &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dtSource.Columns)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;158&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;159&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFCell newCell &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; dataRow.CreateCell(column.Ordinal);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;160&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;161&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; drValue &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; row[column].ToString();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;162&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;163&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&lt;span style="color: #000000"&gt; (column.DataType.ToString())&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;164&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;165&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.String&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;字符串类型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;166&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;newCell.SetCellValue(drValue);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;167&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;168&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.DateTime&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;日期类型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;169&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;DateTime dateV;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;170&lt;/span&gt; &lt;span style="color: #000000"&gt;DateTime.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; dateV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;171&lt;/span&gt; &lt;span style="color: #000000"&gt;newCell.SetCellValue(dateV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;172&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;173&lt;/span&gt; &lt;span style="color: #000000"&gt;newCell.CellStyle &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; dateStyle;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;格式化显示&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;174&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;175&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Boolean&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;布尔型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;176&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt; boolV &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;177&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt;.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; boolV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;178&lt;/span&gt; &lt;span style="color: #000000"&gt;newCell.SetCellValue(boolV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;179&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;180&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Int16&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;整型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;181&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Int32&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;182&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Int64&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;183&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Byte&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;184&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; intV &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;185&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; intV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;186&lt;/span&gt; &lt;span style="color: #000000"&gt;newCell.SetCellValue(intV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;187&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;188&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Decimal&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;浮点型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;189&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.Double&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;190&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt; doubV &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;191&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;.TryParse(drValue, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;out&lt;/span&gt;&lt;span style="color: #000000"&gt; doubV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;192&lt;/span&gt; &lt;span style="color: #000000"&gt;newCell.SetCellValue(doubV);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;193&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;194&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;System.DBNull&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;空值处理&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;195&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;newCell.SetCellValue(&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;196&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;197&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;default&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;198&lt;/span&gt; &lt;span style="color: #000000"&gt;newCell.SetCellValue(&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;199&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;200&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;201&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;202&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;203&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;204&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;205&lt;/span&gt; &lt;span style="color: #000000"&gt;rowIndex&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;206&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;207&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;208&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;209&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; (MemoryStream ms &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; MemoryStream())&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;210&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;211&lt;/span&gt; &lt;span style="color: #000000"&gt;workbook.Write(ms);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;212&lt;/span&gt; &lt;span style="color: #000000"&gt;ms.Flush();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;213&lt;/span&gt; &lt;span style="color: #000000"&gt;ms.Position &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;214&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;215&lt;/span&gt; &lt;span style="color: #000000"&gt;sheet.Dispose();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;216&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;workbook.Dispose();&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;一般只用写这一个就OK了，他会遍历并释放所有资源，但当前版本有问题所以只释放sheet&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;217&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; ms;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;218&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;219&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;220&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;221&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;222&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;223&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;224&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; 用于Web导出&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;225&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;226&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="dtSource"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;源DataTable&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;227&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strHeaderText"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;表头文本&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;228&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strFileName"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;文件名&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;229&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;Author&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;柳永法 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://www.yongfa365.com/&lt;/span&gt;&lt;span style="color: #008000"&gt; 2010-5-8 22:21:41&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/Author&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;230&lt;/span&gt; &lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; ExportByWeb(DataTable dtSource, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strHeaderText, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;231&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;232&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;233&lt;/span&gt; &lt;span style="color: #000000"&gt;HttpContext curContext &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; HttpContext.Current;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;234&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;235&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; 设置编码和附件格式&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;236&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;curContext.Response.ContentType &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;application/vnd.ms-excel&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;237&lt;/span&gt; &lt;span style="color: #000000"&gt;curContext.Response.ContentEncoding &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Encoding.UTF8;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;238&lt;/span&gt; &lt;span style="color: #000000"&gt;curContext.Response.Charset &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;239&lt;/span&gt; &lt;span style="color: #000000"&gt;curContext.Response.AppendHeader(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Content-Disposition&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;240&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;attachment;filename=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; HttpUtility.UrlEncode(strFileName, Encoding.UTF8));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;241&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;242&lt;/span&gt; &lt;span style="color: #000000"&gt;curContext.Response.BinaryWrite(Export(dtSource, strHeaderText).GetBuffer());&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;243&lt;/span&gt; &lt;span style="color: #000000"&gt;curContext.Response.End();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;244&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;245&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;246&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;247&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;248&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;读取excel&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;249&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; 默认第一行为标头&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;250&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;251&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param name="strFileName"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;excel文档路径&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;252&lt;/span&gt; &lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;253&lt;/span&gt; &lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt; DataTable Import(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strFileName)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;254&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;255&lt;/span&gt; &lt;span style="color: #000000"&gt;DataTable dt &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; DataTable();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;256&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;257&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFWorkbook hssfworkbook;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;258&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt; (FileStream file &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; FileStream(strFileName, FileMode.Open, FileAccess.Read))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;259&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;260&lt;/span&gt; &lt;span style="color: #000000"&gt;hssfworkbook &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; HSSFWorkbook(file);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;261&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;262&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFSheet sheet &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; hssfworkbook.GetSheetAt(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;263&lt;/span&gt; &lt;span style="color: #000000"&gt;System.Collections.IEnumerator rows &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.GetRowEnumerator();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;264&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;265&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFRow headerRow &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.GetRow(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;266&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; cellCount &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; headerRow.LastCellNum;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;267&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;268&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; j &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;; j &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; cellCount; j&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;269&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;270&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFCell cell &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; headerRow.GetCell(j);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;271&lt;/span&gt; &lt;span style="color: #000000"&gt;dt.Columns.Add(cell.ToString());&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;272&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;273&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;274&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; i &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; (sheet.FirstRowNum &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;); i &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.LastRowNum; i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;275&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;276&lt;/span&gt; &lt;span style="color: #000000"&gt;HSSFRow row &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; sheet.GetRow(i);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;277&lt;/span&gt; &lt;span style="color: #000000"&gt;DataRow dataRow &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; dt.NewRow();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;278&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;279&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; j &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; row.FirstCellNum; j &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; cellCount; j&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;280&lt;/span&gt; &lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;281&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (row.GetCell(j) &lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;282&lt;/span&gt; &lt;span style="color: #000000"&gt;dataRow[j] &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; row.GetCell(j).ToString();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;283&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;284&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;285&lt;/span&gt; &lt;span style="color: #000000"&gt;dt.Rows.Add(dataRow);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;286&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;287&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; dt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;288&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;289&lt;/span&gt; &lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;290&lt;/span&gt; &lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span &gt;&lt;a onclick="copyCnblogsCode(this)" href="http://www.cnblogs.com/dwfbenben/admin/javascript:void(0);"&gt;&lt;font color="#1d58d1"&gt;复制代码&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;div&gt;以上相关源码及测试用例下载地址：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;a href="http://download.csdn.net/source/2330821" target="_blank"&gt;&lt;font color="#1d58d1"&gt;http://download.csdn.net/source/2330821&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;font color="#1d58d1"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;参考地址：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;NPOI导出Excel表功能实现(多个工作簿)：&lt;a href="http://www.cnblogs.com/zhengjuzhuan/archive/2010/02/01/1661103.html" target="_blank"&gt;&lt;font color="#1d58d1"&gt;http://www.cnblogs.com/zhengjuzhuan/archive/2010/02/01/1661103.html&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;在 Server 端存取 Excel 檔案的利器：NPOI Library：&lt;a href="http://msdn.microsoft.com/zh-tw/ee818993.aspx" target="_blank"&gt;&lt;font color="#1d58d1"&gt;http://msdn.microsoft.com/zh-tw/ee818993.aspx&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;ASP.NET使用NPOI类库导出Excel：&lt;a href="http://www.cnblogs.com/niunan/archive/2010/03/30/1700706.html" target="_blank"&gt;&lt;font color="#1d58d1"&gt;http://www.cnblogs.com/niunan/archive/2010/03/30/1700706.html&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;font color="#1d58d1"&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;font color="#1d58d1"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;　　通过以上分析，我们不难发现，用NPOI或MyXls代替是Excel是很明智的，在发文前，我看到NPOI及MyXls仍然在活跃的更新中。在使用过程中发现这两个组件极相似，以前看过文章说他们使用的内核是一样的。还有NPOI是国人开发的，且有相关中文文档，在很多地方有相关引用，下载量也很大。并且它支持Excel，看到MyXls相关问题基本上没人回答，所以推荐使用NPOI。MyXls可以直接Cell.Font.Bold操作，而NPOI得使用CellType多少感觉有点麻烦。&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2285409.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/12/2285409.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/11/2284226.html</id><title type="text">.NET 调用SAP Web Service(转）</title><summary type="text">里，我们介绍外部系统调用SAP R/3的WEB SERVICE的功能，以.NET调用WEB SERVICE为例。Web service是一种通用的接口方式，通过WEB实现系统间的通讯，所以掌握WEB SERVICE的接口方式，可以有效的为我们提供接口设计方法。 下面我们开始介绍.NET调用WEB SERVICE的实现方法：1． 在R3中创建remote enable的RFC在R/3中创建一个通过参数CARRID获取FLIGHTS数据的RFC：定义属性为Remote-Enabled在IMPORT中定义过滤参数在TABLES中定义返回数据的表类型在SOURCE CODE中，写入取数逻辑： 2． 将</summary><published>2011-12-11T13:49:00Z</published><updated>2011-12-11T13:49:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/11/2284226.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/11/2284226.html"/><content type="html">&lt;p&gt;里，我们介绍外部系统调用SAP R/3的WEB SERVICE的功能，以.NET调用WEB SERVICE为例。&lt;br&gt;Web service是一种通用的接口方式，通过WEB实现系统间的通讯，所以掌握WEB SERVICE的接口方式，可以有效的为我们提供接口设计方法。 &lt;p&gt;下面我们开始介绍.NET调用WEB SERVICE的实现方法：&lt;br&gt;1． 在R3中创建remote enable的RFC&lt;br&gt;在R/3中创建一个通过参数CARRID获取FLIGHTS数据的RFC：&lt;br&gt;定义属性为Remote-Enabled&lt;br&gt;在IMPORT中定义过滤参数&lt;br&gt;在TABLES中定义返回数据的表类型&lt;br&gt;在SOURCE CODE中，写入取数逻辑： &lt;p&gt;2． 将RFC扩展成为WEBSERVICE&lt;br&gt;Sap提供给我们根据RFC扩展为WEBSERVICE的方式，简化定义webservice的过程：&lt;br&gt;修改RFC，路径：Utlities-&amp;gt;More Utlities-&amp;gt;Create Web Service&lt;br&gt;定义webservice的名称：&lt;br&gt;下一屏幕，采用默认值：&lt;br&gt;下一屏幕，Profil属性选择MEDIUN&lt;br&gt;下一屏幕，选择package，我们这里选择LOCAL，然后点击&amp;#8220;继续&amp;#8221;，直到完成。&lt;br&gt;3． 维护webservice并获得WSDL&lt;br&gt;执行TCODE：SOAMANAGER，系统为我们打开一个WEB页面：&lt;br&gt;选择&amp;#8220;Application and scenario Communition&amp;#8221;下的Single Service Administration链接：&lt;br&gt;在&amp;#8220;Search Pattern&amp;#8221;中，输入我们的WEBSERVICE，选中查询到的结果，并点击&amp;#8220;APPLY Selection&amp;#8221;按钮，页面下面的内容就是WEBSERVICE的定义，可以根据需要进行修改。&lt;br&gt;选择上图中的&amp;#8220;Open WSDL document for selected binding&amp;#8221;链接，弹出WSDL的界面，保存地址栏中的地址： &lt;p&gt;4． 在VS2005中，调用webservice&lt;br&gt;在VS2005中，创建WEB项目：&lt;br&gt;在WEB项目中添加WEB引用：&lt;br&gt;输入刚才创建的SAP webservice的WSDL地址，点击&amp;#8220;前往&amp;#8221;：&lt;br&gt;按要求输入验证用户名及密码：&lt;br&gt;链接成功后，系统提示找到了WEBSERVICE，点击&amp;#8220;添加引用&amp;#8221;按钮，完成web引用的添加。&lt;br&gt;我们可以在类视图中查看到系统自动添加的代理类：&lt;br&gt;接下来，我们通过代理类，来调用WEBSERVICE提供的数据：&lt;br&gt;在DEFAULT.ASPX中添加GRIDVIEW：&lt;br&gt;在Page_Load方法中添加以下代码：&lt;br&gt;using System;&lt;br&gt;using System.Data;&lt;br&gt;using System.Configuration;&lt;br&gt;using System.Web;&lt;br&gt;using System.Web.Security;&lt;br&gt;using System.Web.UI;&lt;br&gt;using System.Web.UI.WebControls;&lt;br&gt;using System.Web.UI.WebControls.WebParts;&lt;br&gt;using System.Web.UI.HtmlControls;&lt;br&gt;using System.Net;&lt;br&gt;public partial class _Default : System.Web.UI.Page &lt;br&gt;{&lt;br&gt;protected void Page_Load(object sender, EventArgs e)&lt;br&gt;{&lt;br&gt;//authority&lt;br&gt;NetworkCredential credentials = new NetworkCredential("ZHAOCG", "password");&lt;br&gt;com.XXXXX.sap.bjbidev.ZFLIGHTService serv = new com.XXXXX.sap.bjbidev.ZFLIGHTService();&lt;br&gt;serv.Credentials = credentials; &lt;p&gt;com.XXXXX.sap.bjbidev.Sflight[] data;&lt;br&gt;data = new com.XXXXX.sap.bjbidev.Sflight[0];&lt;br&gt;//call function module for sflight&lt;br&gt;serv.Zflights("LH", ref data); &lt;p&gt;//define a table for keey data got&lt;br&gt;DataTable dt = new DataTable();&lt;br&gt;//define columns for table&lt;br&gt;dt.Columns.Add("Carrid");&lt;br&gt;dt.Columns.Add("Connid");&lt;br&gt;dt.Columns.Add("FLDATE");&lt;br&gt;dt.Columns.Add("Price");&lt;br&gt;dt.Columns.Add("CURRENCY");&lt;br&gt;dt.Columns.Add("PLANETYPE");&lt;br&gt;dt.Columns.Add("SEATSMAX");&lt;br&gt;dt.Columns.Add("SEATSOCC");&lt;br&gt;dt.Columns.Add("PAYMENTSUM");&lt;br&gt;dt.Columns.Add("SEATSMAX_B"); &lt;p&gt;foreach (com.XXXXX.sap.bjbidev.Sflight flights in data)&lt;br&gt;{&lt;br&gt;DataRow dr = dt.NewRow(); &lt;p&gt;dr[0] = flights.Carrid;&lt;br&gt;dr[1] = flights.Connid;&lt;br&gt;dr[2] = flights.Fldate;&lt;br&gt;dr[3] = flights.Price;&lt;br&gt;dr[4] = flights.Currency;&lt;br&gt;dr[5] = flights.Planetype;&lt;br&gt;dr[6] = flights.Seatsmax;&lt;br&gt;dr[7] = flights.Seatsocc;&lt;br&gt;dr[8] = flights.Paymentsum;&lt;br&gt;dr[9] = flights.SeatsmaxB; &lt;p&gt;dt.Rows.Add(dr); &lt;p&gt;} &lt;p&gt;GridView1.DataSource = dt.DefaultView;&lt;br&gt;GridView1.DataBind(); &lt;p&gt;}&lt;br&gt;} &lt;p&gt;更详细步骤： &lt;p&gt;这里，我们介绍外部系统调用SAP R/3的WEB SERVICE的功能，以.NET调用WEB SERVICE为例。 &lt;p&gt;Web service是一种通用的接口方式，通过WEB实现系统间的通讯，所以掌握WEB SERVICE的接口方式，可以有效的为我们提供接口设计方法。 &lt;p&gt;下面我们开始介绍.NET调用WEB SERVICE的实现方法： &lt;p&gt;1． 在R3中创建remote enable的RFC &lt;p&gt;在R/3中创建一个通过参数CARRID获取FLIGHTS数据的RFC： &lt;p&gt;定义属性为Remote-Enabled &lt;table style="color: #000000" cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td width="139"&gt; &lt;table style="color: #000000" cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136099365.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136106084.jpg" width="244" height="160"&gt;&lt;/a&gt; &lt;p&gt;在IMPORT中定义过滤参数 &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136145924.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136154387.jpg" width="244" height="77"&gt;&lt;/a&gt; &lt;p&gt;在TABLES中定义返回数据的表类型 &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136165042.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136194043.jpg" width="244" height="76"&gt;&lt;/a&gt; &lt;p&gt;在SOURCE CODE中，写入取数逻辑： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136214175.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136226226.jpg" width="244" height="102"&gt;&lt;/a&gt; &lt;p&gt;2． 将RFC扩展成为WEBSERVICE &lt;p&gt;Sap提供给我们根据RFC扩展为WEBSERVICE的方式，简化定义webservice的过程： &lt;p&gt;修改RFC，路径：Utlities-&amp;gt;More Utlities-&amp;gt;Create Web Service &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136238866.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136276754.jpg" width="244" height="118"&gt;&lt;/a&gt; &lt;p&gt;定义webservice的名称： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136358726.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136481508.jpg" width="244" height="168"&gt;&lt;/a&gt; &lt;p&gt;下一屏幕，采用默认值： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136504738.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136514313.jpg" width="244" height="168"&gt;&lt;/a&gt; &lt;p&gt;下一屏幕，Profil属性选择MEDIUN &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111211213652334.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136546562.jpg" width="244" height="168"&gt;&lt;/a&gt; &lt;p&gt;下一屏幕，选择package，我们这里选择LOCAL，然后点击&amp;#8220;继续&amp;#8221;，直到完成。 &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112136551678.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image018" border="0" alt="clip_image018" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137052178.jpg" width="244" height="168"&gt;&lt;/a&gt; &lt;p&gt;3． 维护webservice并获得WSDL &lt;p&gt;执行TCODE：SOAMANAGER，系统为我们打开一个WEB页面： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137094277.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image020" border="0" alt="clip_image020" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137101344.jpg" width="244" height="106"&gt;&lt;/a&gt; &lt;p&gt;选择&amp;#8220;Application and scenario Communition&amp;#8221;下的Single Service Administration链接： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137111443.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image022" border="0" alt="clip_image022" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137127921.jpg" width="244" height="50"&gt;&lt;/a&gt; &lt;p&gt;在&amp;#8220;Search Pattern&amp;#8221;中，输入我们的WEBSERVICE，选中查询到的结果，并点击&amp;#8220;APPLY Selection&amp;#8221;按钮，页面下面的内容就是WEBSERVICE的定义，可以根据需要进行修改。 &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137159713.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image024" border="0" alt="clip_image024" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137181057.jpg" width="244" height="148"&gt;&lt;/a&gt; &lt;p&gt;选择上图中的&amp;#8220;Open WSDL document for selected binding&amp;#8221;链接，弹出WSDL的界面，保存地址栏中的地址： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137191745.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image026" border="0" alt="clip_image026" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137206304.jpg" width="244" height="135"&gt;&lt;/a&gt; &lt;p&gt;4． 在VS2005中，调用webservice &lt;p&gt;在VS2005中，创建WEB项目： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137215357.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image028" border="0" alt="clip_image028" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137225140.jpg" width="244" height="149"&gt;&lt;/a&gt; &lt;p&gt;在WEB项目中添加WEB引用： &lt;table style="color: #000000" cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td width="211"&gt; &lt;table style="color: #000000" cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111211213723256.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image030" border="0" alt="clip_image030" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137243702.jpg" width="180" height="244"&gt;&lt;/a&gt; &lt;p&gt;输入刚才创建的SAP webservice的WSDL地址，点击&amp;#8220;前往&amp;#8221;： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137254358.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image032" border="0" alt="clip_image032" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111211213754743.jpg" width="244" height="157"&gt;&lt;/a&gt; &lt;p&gt;按要求输入验证用户名及密码： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137553350.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image033" border="0" alt="clip_image033" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112137565642.jpg" width="244" height="212"&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111211213803338.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image035" border="0" alt="clip_image035" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112138074355.jpg" width="244" height="132"&gt;&lt;/a&gt; &lt;p&gt;链接成功后，系统提示找到了WEBSERVICE，点击&amp;#8220;添加引用&amp;#8221;按钮，完成web引用的添加。 &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/20111211213809376.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image037" border="0" alt="clip_image037" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112138109079.jpg" width="244" height="159"&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149042441.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image039" border="0" alt="clip_image039" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149062116.jpg" width="244" height="191"&gt;&lt;/a&gt; &lt;p&gt;我们可以在类视图中查看到系统自动添加的代理类： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149081168.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image041" border="0" alt="clip_image041" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149092970.jpg" width="244" height="148"&gt;&lt;/a&gt; &lt;p&gt;接下来，我们通过代理类，来调用WEBSERVICE提供的数据： &lt;p&gt;在DEFAULT.ASPX中添加GRIDVIEW： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149117910.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image043" border="0" alt="clip_image043" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149175223.jpg" width="244" height="159"&gt;&lt;/a&gt; &lt;p&gt;在Page_Load方法中添加以下代码： &lt;table style="color: #000000" border="1" cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="583"&gt; &lt;p&gt;using System; &lt;p&gt;using System.Data; &lt;p&gt;using System.Configuration; &lt;p&gt;using System.Web; &lt;p&gt;using System.Web.Security; &lt;p&gt;using System.Web.UI; &lt;p&gt;using System.Web.UI.WebControls; &lt;p&gt;using System.Web.UI.WebControls.WebParts; &lt;p&gt;using System.Web.UI.HtmlControls; &lt;p&gt;using System.Net; &lt;p&gt;public partial class _Default : System.Web.UI.Page &lt;p&gt;{ &lt;p&gt;protected void Page_Load(object sender, EventArgs e) &lt;p&gt;{ &lt;p&gt;//authority &lt;p&gt;NetworkCredential credentials = new NetworkCredential("ZHAOCG", "password"); &lt;p&gt;com.XXXXX.sap.bjbidev.ZFLIGHTService serv = new com.XXXXX.sap.bjbidev.ZFLIGHTService(); &lt;p&gt;serv.Credentials = credentials; &lt;p&gt;com.XXXXX.sap.bjbidev.Sflight[] data; &lt;p&gt;data = new com.XXXXX.sap.bjbidev.Sflight[0]; &lt;p&gt;//call function module for sflight &lt;p&gt;serv.Zflights("LH", ref data); &lt;p&gt;//define a table for keey data got &lt;p&gt;DataTable dt = new DataTable(); &lt;p&gt;//define columns for table &lt;p&gt;dt.Columns.Add("Carrid"); &lt;p&gt;dt.Columns.Add("Connid"); &lt;p&gt;dt.Columns.Add("FLDATE"); &lt;p&gt;dt.Columns.Add("Price"); &lt;p&gt;dt.Columns.Add("CURRENCY"); &lt;p&gt;dt.Columns.Add("PLANETYPE"); &lt;p&gt;dt.Columns.Add("SEATSMAX"); &lt;p&gt;dt.Columns.Add("SEATSOCC"); &lt;p&gt;dt.Columns.Add("PAYMENTSUM"); &lt;p&gt;dt.Columns.Add("SEATSMAX_B"); &lt;p&gt;foreach (com.XXXXX.sap.bjbidev.Sflight flights in data) &lt;p&gt;{ &lt;p&gt;DataRow dr = dt.NewRow(); &lt;p&gt;dr[0] = flights.Carrid; &lt;p&gt;dr[1] = flights.Connid; &lt;p&gt;dr[2] = flights.Fldate; &lt;p&gt;dr[3] = flights.Price; &lt;p&gt;dr[4] = flights.Currency; &lt;p&gt;dr[5] = flights.Planetype; &lt;p&gt;dr[6] = flights.Seatsmax; &lt;p&gt;dr[7] = flights.Seatsocc; &lt;p&gt;dr[8] = flights.Paymentsum; &lt;p&gt;dr[9] = flights.SeatsmaxB; &lt;p&gt;dt.Rows.Add(dr); &lt;p&gt;} &lt;p&gt;GridView1.DataSource = dt.DefaultView; &lt;p&gt;GridView1.DataBind(); &lt;p&gt;} &lt;p&gt;}&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;测试运行，结果如下： &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149228816.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image045" border="0" alt="clip_image045" src="http://images.cnblogs.com/cnblogs_com/dwfbenben/201112/201112112149232296.jpg" width="244" height="121"&gt;&lt;/a&gt; &lt;p&gt;详细及其他内容，请访问： &lt;p&gt;&lt;a href="http://community.kingdee.com/pages/chunguangz/"&gt;http://community.kingdee.com/pages/chunguangz/&lt;/a&gt; &lt;p&gt;&lt;a title="http://community.kingdee.com/pages/chunguangz/blog/archive/2010/06/24/468946.aspx" href="http://community.kingdee.com/pages/chunguangz/blog/archive/2010/06/24/468946.aspx"&gt;http://community.kingdee.com/pages/chunguangz/blog/archive/2010/06/24/468946.aspx&lt;/a&gt;  &lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2284226.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/11/2284226.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283657.html</id><title type="text">C#如何导入内文至SAP（转）</title><summary type="text">内文这个东西就像长篇大论的描述，跟在WORD里面一样可以输入无数个字。如果在sap中输入事务码进去可以维护多少个字都可以，但是如果是用.NET调用BAPI传进去内文的话，会将内文超过132个字符的内容全部截掉。要怎么样才能全部导入所有内文呢？ 以下以导入请购单的程序来描述： //表头内文 转换多笔实现超长文本插入 ......PRHEADERTEXT.Insert(); // 这个是BAPI里面导入内文的参数if (txtQG07.Text.Trim().Length &amp;gt; 120) // txtQG07.Text的内容就是所有内文，这里用120个字符判断{int len = txtQG0</summary><published>2011-12-10T15:43:00Z</published><updated>2011-12-10T15:43:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283657.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283657.html"/><content type="html">&lt;p&gt;内文这个东西就像长篇大论的描述，跟在WORD里面一样可以输入无数个字。如果在sap中输入事务码进去可以维护多少个字都可以，但是如果是用.NET调用BAPI传进去内文的话，会将内文超过132个字符的内容全部截掉。要怎么样才能全部导入所有内文呢？ &lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/41253/2011111201103555.jpg"&gt; &lt;p&gt;以下以导入请购单的程序来描述：  &lt;p&gt;//表头内文 转换多笔实现超长文本插入 &lt;p&gt;......&lt;br&gt;PRHEADERTEXT.Insert(); // 这个是BAPI里面导入内文的参数&lt;br&gt;if (txtQG07.Text.Trim().Length &amp;gt; 120) // txtQG07.Text的内容就是所有内文，这里用120个字符判断&lt;br&gt;{&lt;br&gt;int len = txtQG07.Text.Trim().Length / 120; // 这里len取整数&lt;br&gt;len = len + 1; // 可能有结余，故加一&lt;br&gt;for (int q = 0; q &amp;lt; len; q++)&lt;br&gt;{&lt;br&gt;if (q + 1 == len) // 如果到了最后一行，则去最后一行之后的所有内文&lt;br&gt;PRHEADERTEXT.CurrentRow.SetValue("TEXT_LINE", txtQG07.Text.Trim().Substring(q * 120));&lt;br&gt;else&lt;br&gt;PRHEADERTEXT.CurrentRow.SetValue("TEXT_LINE", txtQG07.Text.Trim().Substring(q * 120, 120));&lt;br&gt;PRHEADERTEXT.Append(); // 将截取的每一段内容都附加到内文后面。如果不加这一句，则文本会倒置&lt;br&gt;}&lt;br&gt;}&lt;br&gt;else&lt;br&gt;{&lt;br&gt;PRHEADERTEXT.CurrentRow.SetValue("TEXT_LINE", txtQG07.Text.Trim());&lt;br&gt;} &lt;p&gt;...... &lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/41253/2011111201090448.jpg"&gt; &lt;p&gt;如此则可以将内文全部导入。但如果是项目中的内文呢？因为会涉及到传入项目序号，所以需要稍作处理： &lt;p&gt;//项目内文&lt;br&gt;PRITEMTEXT.Insert();&lt;br&gt;if (ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Length &amp;gt; 120)&lt;br&gt;{&lt;br&gt;int len = ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Length / 120;&lt;br&gt;len = len + 1;&lt;br&gt;for (int q = 0; q &amp;lt; len; q++)&lt;br&gt;{&lt;br&gt;PRITEMTEXT.CurrentRow.SetValue("PREQ_ITEM", j.ToString()); // 将额外需要的参数都添加到这里，每循环一次都要SetValue一次&lt;br&gt;if (q + 1 == len)&lt;br&gt;PRITEMTEXT.CurrentRow.SetValue("TEXT_LINE", ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Substring(q * 120));&lt;br&gt;else&lt;br&gt;PRITEMTEXT.CurrentRow.SetValue("TEXT_LINE", ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Substring(q * 120, 120));&lt;br&gt;PRITEMTEXT.Append();&lt;br&gt;}&lt;br&gt;}&lt;br&gt;else &lt;br&gt;{&lt;br&gt;PRITEMTEXT.CurrentRow.SetValue("PREQ_ITEM", j.ToString());&lt;br&gt;PRITEMTEXT.CurrentRow.SetValue("TEXT_LINE", ds.Tables[0].Rows[i]["QGA11"].ToString());&lt;br&gt;} &lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/41253/2011111201092466.jpg"&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2283657.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283657.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283655.html</id><title type="text">BAPI_TRANSACTION_COMMIT的使用方法（转）</title><summary type="text">为什么.net调用SAP的BAPI接口需要调用BAPI_TRANSACTION_COMMIT呢？首先得明白BAPI_TRANSACTION_COMMIT这个BAPI的作用。它功劳很大，在SAP里面很多的BAPI直接调用是不会有结果的，因为需要COMMIT一下才能生效，比如生成资产编号的BAPI：BAPI_FIXEDASSET_CREATE1，如果对他直接在SE37中调用运行或者使用SE38调用它，虽然可以得到一个资产编号，但是在AS03里面查询，系统会很白痴得提示你：该资产编号不存在于XX公司。更搞的是当你在AS01中新建资产编号时，新建的资产编号会跳过之前用BAPI生成“失败”的号码。 那么</summary><published>2011-12-10T15:38:00Z</published><updated>2011-12-10T15:38:00Z</updated><author><name>笨笨丁</name><uri>http://www.cnblogs.com/dwfbenben/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283655.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283655.html"/><content type="html">&lt;p&gt;为什么.net调用SAP的BAPI接口需要调用BAPI_TRANSACTION_COMMIT呢？首先得明白BAPI_TRANSACTION_COMMIT这个BAPI的作用。它功劳很大，在SAP里面很多的BAPI直接调用是不会有结果的，因为需要COMMIT一下才能生效，比如生成资产编号的BAPI：BAPI_FIXEDASSET_CREATE1，如果对他直接在SE37中调用运行或者使用SE38调用它，虽然可以得到一个资产编号，但是在AS03里面查询，系统会很白痴得提示你：该资产编号不存在于XX公司。更搞的是当你在AS01中新建资产编号时，新建的资产编号会跳过之前用BAPI生成&amp;#8220;失败&amp;#8221;的号码。 &lt;p&gt;那么，这就需要COMMIT一下，在调用这个BAPI之后再紧接调用BAPI_TRANSACTION_COMMIT这个。但是，在SE38中是可以这样做，而在.net中就没那么简单了，直接在调用完BAPI_FIXEDASSET_CREATE1之后再紧接调用BAPI_TRANSACTION_COMMIT是不可以的，虽然还是生成了资产编号，但仍旧是个废号。跟在SE37中调用无异。 &lt;p&gt;怎么在.net中解决这个问题呢，这就需要用到RfcSessionManager.BeginContext和RfcSessionManager.EndContext这两个方法了。只有在这两个方法之间调用BAPI才能方保万无一失！ &lt;p&gt;代码如下： &lt;p&gt;1、首先引用：using SAP.Middleware.Connector; &lt;p&gt;2、调用代码： &lt;p&gt;public void nco(DataSet ds)&lt;br&gt;{&lt;br&gt;IDestinationConfiguration ID = new RfcConfig();&lt;br&gt;RfcDestinationManager.RegisterDestinationConfiguration(ID);&lt;br&gt;RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000");&lt;br&gt;RfcDestinationManager.UnregisterDestinationConfiguration(ID);&lt;br&gt;nco(prd, ds);&lt;br&gt;}&lt;br&gt;public void nco(RfcDestination prd, DataSet ds)&lt;br&gt;{&lt;br&gt;bool asset = false;&lt;br&gt;//选择要调用的BAPI的名称&lt;br&gt;RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = prd.Repository.GetFunctionMetadata("BAPI_REQUISITION_CREATE");&lt;br&gt;//新建调用该BAPI的一个&amp;#8220;实例&amp;#8221;&lt;br&gt;IRfcFunction function = null;&lt;br&gt;function = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction();&lt;br&gt;IRfcTable ITEMS = function.GetTable("REQUISITION_ITEMS");&lt;br&gt;IRfcTable ACCOUNT = function.GetTable("REQUISITION_ACCOUNT_ASSIGNMENT");&lt;br&gt;IRfcTable RETURN = function.GetTable("RETURN");&lt;br&gt;int j = 0;&lt;br&gt;RfcSessionManager.BeginContext(prd); //因期间需要同一个时间调用BAPI，而且各个BAPI之间有顺序关联，所以最好用这个包围起来&lt;br&gt;for (int i = 0; i &amp;lt; ds.Tables[0].Rows.Count; i++)&lt;br&gt;{&lt;br&gt;ITEMS.Insert();&lt;br&gt;j = j + 1;&lt;br&gt;j = j * 10;&lt;br&gt;ITEMS.CurrentRow.SetValue("PREQ_ITEM", j.ToString());&lt;br&gt;ITEMS.CurrentRow.SetValue("PREQ_NAME", ds.Tables[0].Rows[i]["QGA27"].ToString());&lt;br&gt;ITEMS.CurrentRow.SetValue("CREATED_BY", ds.Tables[0].Rows[i]["QGA27"].ToString());&lt;br&gt;ITEMS.CurrentRow.SetValue("PREQ_DATE", Convert.ToDateTime(ds.Tables[0].Rows[i]["QGA15"].ToString()).Date);&lt;br&gt;ITEMS.CurrentRow.SetValue("MATERIAL", ds.Tables[0].Rows[i]["QGA04"].ToString());&lt;br&gt;ITEMS.CurrentRow.SetValue("SHORT_TEXT", ds.Tables[0].Rows[i]["QGA05"].ToString());&lt;br&gt;ITEMS.CurrentRow.SetValue("PLANT", "1201");&lt;br&gt;ITEMS.CurrentRow.SetValue("QUANTITY", Convert.ToDecimal(ds.Tables[0].Rows[i]["QGA07"].ToString()));&lt;br&gt;ITEMS.CurrentRow.SetValue("DELIV_DATE", Convert.ToDateTime(ds.Tables[0].Rows[i]["QGA09"].ToString()).Date);&lt;br&gt;ITEMS.CurrentRow.SetValue("C_AMT_BAPI", Convert.ToDecimal(ds.Tables[0].Rows[i]["QGA14"].ToString()));&lt;br&gt;ITEMS.CurrentRow.SetValue("ACCTASSCAT", ds.Tables[0].Rows[i]["QGA12"].ToString());&lt;br&gt;ITEMS.CurrentRow.SetValue("DOC_TYPE", ds.Tables[0].Rows[i]["QGA28"].ToString());&lt;br&gt;ITEMS.CurrentRow.SetValue("UNIT", ds.Tables[0].Rows[i]["QGA06"].ToString()); &lt;p&gt;ACCOUNT.Insert();&lt;br&gt;ACCOUNT.CurrentRow.SetValue("PREQ_ITEM", j.ToString());&lt;br&gt;ACCOUNT.CurrentRow.SetValue("COST_CTR", ds.Tables[0].Rows[i]["QGA31"].ToString());&lt;br&gt;ACCOUNT.CurrentRow.SetValue("ORDER_NO", ds.Tables[0].Rows[i]["QGA10"].ToString()); &lt;p&gt;if (ds.Tables[0].Rows[i]["QGA12"].ToString().Trim() == "A") //如果类别是A，即资产，则需要资产编号&lt;br&gt;{&lt;br&gt;ACCOUNT.CurrentRow.SetValue("ASSET_NO", GetASSET(prd, i, ds)); //设置新建的资产编号&lt;br&gt;ACCOUNT.CurrentRow.SetValue("CO_AREA", "1000");&lt;br&gt;ACCOUNT.CurrentRow.SetValue("SUB_NUMBER", "0000");&lt;br&gt;}&lt;br&gt;}&lt;br&gt;function.SetValue("REQUISITION_ITEMS", ITEMS);&lt;br&gt;function.SetValue("REQUISITION_ACCOUNT_ASSIGNMENT", ACCOUNT);&lt;br&gt;function.Invoke(prd);//提交调用BAPI &lt;br&gt;RfcSessionManager.EndContext(prd);&lt;br&gt;if (RETURN.GetString("TYPE").ToString().Trim() == "I")&lt;br&gt;{&lt;br&gt;Suess.Text = RETURN.GetString("MESSAGE").ToString();&lt;br&gt;BANFN.Text = "返回的请购单号：" + function.GetString("NUMBER").Trim();&lt;br&gt;}&lt;br&gt;else if (RETURN.GetString("TYPE").ToString().Trim() == "E")&lt;br&gt;{&lt;br&gt;Error.Text = RETURN.GetString("MESSAGE").ToString();&lt;br&gt;}&lt;br&gt;prd = null;&lt;br&gt;}&lt;br&gt;/// &amp;lt;summary&amp;gt;&lt;br&gt;/// 取得资产编号&lt;br&gt;/// &amp;lt;/summary&amp;gt;&lt;br&gt;/// &amp;lt;param name="prd"&amp;gt;&amp;lt;/param&amp;gt;&lt;br&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br&gt;public string GetASSET(RfcDestination prd, int i, DataSet ds)&lt;br&gt;{&lt;br&gt;RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = prd.Repository.GetFunctionMetadata("BAPI_FIXEDASSET_CREATE1");&lt;br&gt;IRfcFunction function = null;&lt;br&gt;function = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction();&lt;br&gt;IRfcStructure KEY = function.GetStructure("KEY");&lt;br&gt;KEY.SetValue("COMPANYCODE", "2012");&lt;br&gt;IRfcStructure GENERALDATA = function.GetStructure("GENERALDATA");&lt;br&gt;GENERALDATA.SetValue("ASSETCLASS", "00005990");&lt;br&gt;GENERALDATA.SetValue("DESCRIPT", ds.Tables[0].Rows[i]["QGA05"].ToString());&lt;br&gt;IRfcStructure GENERALDATAX = function.GetStructure("GENERALDATAX");&lt;br&gt;GENERALDATAX.SetValue("ASSETCLASS", "X");&lt;br&gt;GENERALDATAX.SetValue("DESCRIPT", "X");&lt;br&gt;function.SetValue("KEY", KEY);&lt;br&gt;function.SetValue("GENERALDATA", GENERALDATA);&lt;br&gt;function.SetValue("GENERALDATAX", GENERALDATAX);&lt;br&gt;prd.Repository.ClearFunctionMetadata(); //貌似这句可以省略...&lt;br&gt;RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD1 = prd.Repository.GetFunctionMetadata("BAPI_TRANSACTION_COMMIT");&lt;br&gt;IRfcFunction function1 = null;&lt;br&gt;function1 = BAPI_COMPANYCODE_GETDETAIL_MD1.CreateFunction();&lt;br&gt;function1.SetValue("WAIT", "X");&lt;br&gt;RfcSessionManager.BeginContext(prd);&lt;br&gt;function.Invoke(prd); //提交调用BAPI_FIXEDASSET_CREATE1 生成资产编号&lt;br&gt;function1.Invoke(prd); //提交调用BAPI_TRANSACTION_COMMIT 进行COMMIT一下&lt;br&gt;RfcSessionManager.EndContext(prd);&lt;br&gt;twMsgbox.AjaxAlert(function.GetValue("ASSET").ToString().Trim()); &lt;br&gt;return function.GetValue("ASSET").ToString().Trim();&lt;br&gt;} &lt;p&gt;新建立之后的请购单一切OK，同时，建立的资产编号在AS03已经可以认出来了！！&lt;/p&gt; &lt;img src="http://www.cnblogs.com/dwfbenben/aggbug/2283655.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwfbenben/archive/2011/12/10/2283655.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
