在线
客服

在线客服
尊敬的客户,我们24小时竭诚为您服务 公司总机: 0755-83312037 (32条线)

客服
热线

0755-83312037 (32条线)
7*24小时客服服务热线

?

关注
微信

关注官方微信

返回
顶部

11

2020-05
Photoshop入门技巧:16个PS经验技巧

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">一个设计师的PS经验技巧及设计心得。</font> </td> </tr></tbody></table> <p>1.Alt/Ctrl+delete 填充前景色和背景色同样适用于形状图层和文字图层;</p> <p>2.设置网格线间隔为64px,子网格数为32px,然后对齐网格设计,有利从rentia设备精确转到标准设备;</p> <p>3.Ctrl+Enter或者小键盘的Enter快速退出文字编辑状态;</p> <p>4.对于某一图层的 图层样式,颜色叠加混合模式设为色相,渐变叠加混合模式设为明度,可以更方便的调节渐变;</p> <p>a.可以先为整个项目设置好统一的渐变风格(相同的明度变化)</p> <p style="TEXT-ALIGN: center"><a class="bPic" href="/files/allimg/130320/1041110.jpg" jquery1363746356468="5"><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; HEIGHT: auto; BORDER-RIGHT-STYLE: none; PADDING-TOP: 0px" border="0" alt="一个设计师的PS经验技巧及设计心得,破洛洛" src="http://www.webjx.com/files/allimg/130320/1041110.jpg" width="782" height="355"></a></p> <p>b.然后为不同功能的控件施加不同的颜色</p> <p style="TEXT-ALIGN: center"><a class="bPic" href="/files/allimg/130320/1041111.jpg" jquery1363746356468="6"><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; HEIGHT: auto; BORDER-RIGHT-STYLE: none; PADDING-TOP: 0px" border="0" alt="一个设计师的PS经验技巧及设计心得,破洛洛" src="http://www.webjx.com/files/allimg/130320/1041111.jpg" width="888" height="459"></a></p> <p>5.使用内发光可以增加更为精细的纹理效果</p> <p style="TEXT-ALIGN: center"><a class="bPic" href="/files/allimg/130320/1041112.png" jquery1363746356468="7"><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; HEIGHT: auto; BORDER-RIGHT-STYLE: none; PADDING-TOP: 0px" border="0" alt="一个设计师的PS经验技巧及设计心得,破洛洛" src="http://www.webjx.com/files/allimg/130320/1041112.png" width="891" height="480"></a></p> <p>6.使用径向渐变的时候可以加点内发光表示强调;</p> <p>7.图层样式里,投影的距离设为2px,投影 大小为1px和2px会产生同样的投影效果;</p> <p>8.PS CS6版本中,视图(View)〉显示(Show)〉智能参考线(Smart Guides)处可打开智能参考线 ;</p> <p>9.Bulk Rename Utility可以批量重命名文件,比如说给统一加上@2x;</p> <p>10.Alt+点击图层组前的小三角,其子图层组和自动折叠或者展开;</p> <p>11.锁定透明度,给图层上色;</p> <p>12.添加投影或者外发光,可以减少弧形锯齿;</p> <p>13.如果倾斜老是产生锯齿,试试-33.6度;</p> <p>14.这里可以取消掉每次复制图层 都会出现的&#8211;副本;</p> <p style="TEXT-ALIGN: center"><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; PADDING-TOP: 0px" border="0" alt="一个设计师的PS经验技巧及设计心得,破洛洛" src="http://www.webjx.com/files/allimg/130320/1041113.png" width="357" height="440"></p> <p>Expand New Effects 的意思是 为图层添加图层样式,或者滤镜效果时,图层属性面板会展开,有时会很长(如下图)而影响操作,所以可以选择取消。</p> <p style="TEXT-ALIGN: center"><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; PADDING-TOP: 0px" border="0" alt="一个设计师的PS经验技巧及设计心得,破洛洛" src="http://www.webjx.com/files/allimg/130320/1041114.jpg" width="236" height="248"></p> <p>15.Ctrl+H 隐藏所有;Ctrl +;隐藏参考线;Ctrl+“ 隐藏网格;Ctrl+Shift+H 仅隐藏路径;</p> <p>16.做出选区的同时按住空格键,可同时移动选区</p>

Read more+

13

2019-04
ASP视频教程:制作关于我们和联系我们页面

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">ASP视频教程:制作关于我们和联系我们页面.</font> </td> </tr></tbody></table> <p>大家在初学ASP程序的时候,我们经常第一个任务就是配置环境!在这里根据网页教学网站长的经验,有时克隆版的XP系统有时是安装不了IIS的!前面我们已经讲解了<a href="http://www.webjx.com/asp/2009-11-29/18261.html"><font color="#006da3">ASP视频教程:制作在线订购页面</font></a>,本讲主要讲述制作关于我们和联系我们页面。大家请看视频教程。</p> <p align="center"><object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" height="450" width="600" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param value="15875" name="_cx"> <param value="11906" name="_cy"> <param value="" name="FlashVars"> <param value="/videoedu/dwsqlasp/28.swf" name="Movie"> <param value="/videoedu/dwsqlasp/28.swf" name="Src"> <param value="Window" name="WMode"> <param value="0" name="Play"> <param value="-1" name="Loop"> <param value="High" name="Quality"> <param value="" name="SAlign"> <param value="-1" name="Menu"> <param value="" name="Base"> <param value="" name="AllowScriptAccess"> <param value="ShowAll" name="Scale"> <param value="0" name="DeviceFont"> <param value="0" name="EmbedMovie"> <param value="" name="BGColor"> <param value="" name="SWRemote"> <param value="" name="MovieData"> <param value="1" name="SeamlessTabbing"> <param value="0" name="Profile"> <param value="" name="ProfileAddress"> <param value="0" name="ProfilePort"> <param value="all" name="AllowNetworking"> <param value="false" name="AllowFullScreen"></object></p>

Read more+

13

2019-04
ASP视频教程:后台功能的一些完善

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">ASP视频教程:后台功能的一些完善.</font> </td> </tr></tbody></table> <p>大家在初学ASP程序的时候,我们经常第一个任务就是配置环境!在这里根据网页教学网站长的经验,有时克隆版的XP系统有时是安装不了IIS的!前面我们已经讲解了<a href="http://www.webjx.com/asp/2009-11-29/18262.html"><font color="#006da3">ASP视频教程:制作关于我们和联系我们页面</font></a>,本讲主要讲述后台功能的一些完善。大家请看视频教程。</p> <p align="center"><object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" height="450" width="600" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param value="15875" name="_cx"> <param value="11906" name="_cy"> <param value="" name="FlashVars"> <param value="/videoedu/dwsqlasp/29.swf" name="Movie"> <param value="/videoedu/dwsqlasp/29.swf" name="Src"> <param value="Window" name="WMode"> <param value="0" name="Play"> <param value="-1" name="Loop"> <param value="High" name="Quality"> <param value="" name="SAlign"> <param value="-1" name="Menu"> <param value="" name="Base"> <param value="" name="AllowScriptAccess"> <param value="ShowAll" name="Scale"> <param value="0" name="DeviceFont"> <param value="0" name="EmbedMovie"> <param value="" name="BGColor"> <param value="" name="SWRemote"> <param value="" name="MovieData"> <param value="1" name="SeamlessTabbing"> <param value="0" name="Profile"> <param value="" name="ProfileAddress"> <param value="0" name="ProfilePort"> <param value="all" name="AllowNetworking"> <param value="false" name="AllowFullScreen"></object></p>

Read more+

13

2019-04
ASP视频教程:后台页面加入限制访问和禁用缓存功能

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">ASP视频教程:后台页面加入限制访问和禁用缓存功能.</font> </td> </tr></tbody></table> <p>大家在初学ASP程序的时候,我们经常第一个任务就是配置环境!在这里根据网页教学网站长的经验,有时克隆版的XP系统有时是安装不了IIS的!前面我们已经讲解了<a href="http://www.webjx.com/asp/2009-11-29/18263.html"><font color="#006da3">ASP视频教程:后台功能的一些完善</font></a>,本讲主要讲述后台页面加入限制访问和禁用缓存功能。大家请看视频教程。</p> <p align="center"><object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" height="450" width="600" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param value="15875" name="_cx"> <param value="11906" name="_cy"> <param value="" name="FlashVars"> <param value="/videoedu/dwsqlasp/30.swf" name="Movie"> <param value="/videoedu/dwsqlasp/30.swf" name="Src"> <param value="Window" name="WMode"> <param value="0" name="Play"> <param value="-1" name="Loop"> <param value="High" name="Quality"> <param value="" name="SAlign"> <param value="-1" name="Menu"> <param value="" name="Base"> <param value="" name="AllowScriptAccess"> <param value="ShowAll" name="Scale"> <param value="0" name="DeviceFont"> <param value="0" name="EmbedMovie"> <param value="" name="BGColor"> <param value="" name="SWRemote"> <param value="" name="MovieData"> <param value="1" name="SeamlessTabbing"> <param value="0" name="Profile"> <param value="" name="ProfileAddress"> <param value="0" name="ProfilePort"> <param value="all" name="AllowNetworking"> <param value="false" name="AllowFullScreen"></object></p>

Read more+

13

2019-04
ASP视频教程:制作网站前台首页

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">ASP视频教程:制作前台首页。</font> </td> </tr></tbody></table> <p>大家在初学ASP程序的时候,我们经常第一个任务就是配置环境!在这里根据网页教学网站长的经验,有时克隆版的XP系统有时是安装不了IIS的!前面我们已经讲解了<a href="http://www.webjx.com/asp/2009-11-29/18264.html"><font color="#006da3">ASP视频教程:后台页面加入限制访问和禁用缓存功能</font></a>,本讲主要讲述制作前台首页。大家请看视频教程。</p> <p align="center"><object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" height="450" width="600" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param value="15875" name="_cx"> <param value="11906" name="_cy"> <param value="" name="FlashVars"> <param value="/videoedu/dwsqlasp/31.swf" name="Movie"> <param value="/videoedu/dwsqlasp/31.swf" name="Src"> <param value="Window" name="WMode"> <param value="0" name="Play"> <param value="-1" name="Loop"> <param value="High" name="Quality"> <param value="" name="SAlign"> <param value="-1" name="Menu"> <param value="" name="Base"> <param value="" name="AllowScriptAccess"> <param value="ShowAll" name="Scale"> <param value="0" name="DeviceFont"> <param value="0" name="EmbedMovie"> <param value="" name="BGColor"> <param value="" name="SWRemote"> <param value="" name="MovieData"> <param value="1" name="SeamlessTabbing"> <param value="0" name="Profile"> <param value="" name="ProfileAddress"> <param value="0" name="ProfilePort"> <param value="all" name="AllowNetworking"> <param value="false" name="AllowFullScreen"></object></p>

Read more+

13

2019-04
ASP视频教程:备份和还原SQL Server 2000数据库

WebjxCom提示:ASP视频教程:备份和还原SQL Server 2000数据库.大家在初学ASP程序的时候,我们经常第一个任务就是配置环境!在这里根据网页教学网站长的经验,有时克隆版的XP系统有时是安装不了IIS的!前面我们已经讲解了ASP视频教程:制作网站前台首页,本讲主要讲述备份和还原SQL Server 2000数据库。大家请看视频教程。

Read more+

13

2019-04
ASP实例教程:asp无限级显示分类代码

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">asp无限级分类加js收缩伸展功能代码.</font> </td> </tr></tbody></table> 为了方便使用分类,我定义了一个分类表category,里面字段是<br>id(自动编号)&#160; cat_name(分类名) parent_id(父ID,对应本表ID) cat_order(顺序) is_show(是否显示) &#160;u_id(这个用来区别是新闻分类,还是产品分类,还是其他分类),为了方便,我将这些分类全部放在这张表中。<br>在给客户添加分类的时候,结果有太多的分类,本来前台显示的时候,将它们全部显示出来了,好长。客户提出修改意见,要求将它们改成点击大分类,才可以将其子分类显示出来,并且每个分类下面还有一条虚线,并且大分类前面有个图片加号,展开后要变成减号。<br>&lt;script&gt;<br>function fd(id,num)<br>{<br>&#160;t=$("c"+id+"_1").style.display;<br>&#160;<br>&#160;if(t=="none")<br>&#160;{<br>&#160;&#160; t1="block";<br>&#160;&#160; t2="images/fll_34.gif";<br>&#160;}<br>&#160;else <br>&#160;{<br>&#160;&#160;t1="none";&#160;<br>&#160;&#160;t2="images/fll_34.gif";<br>&#160;}<br>&#160;for(i=1;i&lt;=num;i++)<br>&#160;{<br>&#160;&#160;$("c"+id+"_"+i).style.display=t1;<br>&#160;&#160;$("d_"+id).src=t2;&#160;&#160;<br>&#160;}<br>}<br>function $(id)<br>{<br>&#160;return document.getElementById(id);<br>}<br>&lt;/script&gt;<br>这是asp无限级显示分类代码,并给这些分类加上id<br><br>&lt;%<br>'功能:asp无限级显示分类+js显示与隐藏<br>'参数:parent_id为父ID,stype为新闻,产品,文章大分类<br>'原创文章,转载请保留些信息,谢谢<br>function cat111(parent_id,stype)<br>set rs1&#160;=server.createobject("adodb.recordset")<br>sql="select cat_name,cat_id,parent_id from category where parent_id="&amp;parent_id&amp;" and u_id="&amp;stype&amp;" and is_show=1 order by cat_order asc"<br>set rs1=conn.execute(sql)<br>If rs1.eof Then<br>Else&#160;<br>if(depath&gt;2) then<br>&#160;display2="none"&#160;&#160;&#160;&#160;&#160;<br>else<br>&#160;display2="block"&#160;<br>end if&#160;&#160;<br>dim j<br>j=1<br>do while not rs1.eof&#160;<br>&#160;cat_name1 = rs1("cat_name")<br>&#160;cat_id1 = rs1("cat_id")&#160;&#160;<br>&#160;parent_id1=rs1("parent_id")&#160;<br>&#160;'******************下面是你要显示的******************'&#160;<br>&#160;m9=0<br>&#160;sql2="select count(cat_id) as t from category where parent_id="&amp;cat_id1&amp;" and u_id="&amp;stype&amp;""&#160;&#160;&#160;&#160;<br>&#160;set rs2=server.createobject("adodb.recordset")<br>&#160;set rs2=conn.execute(sql2)&#160;<br>&#160;if not rs2.eof then<br>&#160;&#160;&#160; m9=rs2("t")<br>&#160;else<br>&#160;&#160;m9=0&#160;&#160;<br>&#160;end if&#160;<br>&#160;rs2.close<br>&#160;&#160;<br>&#160;if(depath&lt;=2) then&#160;&#160;<br>&#160;&#160;mgif="images/-.gif"<br>&#160;&#160;a="block"<br>&#160;else<br>&#160;&#160;if(m9&gt;0) then&#160;<br>&#160;&#160;mgif="images/+.gif"&#160;<br>&#160;&#160;else<br>&#160;&#160;mgif="images/-.gif"<br>&#160;&#160;end if<br>&#160;&#160;if(depath=4) then<br>&#160;&#160;&#160;a="block"<br>&#160;&#160;else&#160;&#160;<br>&#160;&#160;&#160;a="none"<br>&#160;&#160;end if<br>&#160;end if&#160;&#160;<br>&#160;<br>&#160;<br>&#160;catstr=catstr &amp; "&lt;tr id=""c"&amp;parent_id&amp;"_"&amp;j&amp;""" style=""display:"&amp;a&amp;"""&gt;&lt;td width=""25"" align=""center"" valign=""middle"" class=""dotted_class""&gt;&lt;img src="""&amp;mgif&amp;""" width=""12"" height=""11"" id=""d_"&amp;cat_id1&amp;"""&gt;&lt;/td&gt;&lt;td class=""dotted_class leftcatcss""&gt;"<br>&#160;if(m9&gt;0) then<br>&#160;&#160;catstr=catstr&amp;"&lt;a href=""javascript:void(0);"" _fcksavedurl="""javascript:void(0);""" _fcksavedurl="""javascript:void(0);""" onclick=""fd("&amp;cat_id1&amp;","&amp;m9&amp;")""&gt;"&#160;&amp;vbnewline<br>&#160;else<br>&#160;&#160;catstr=catstr&amp;"&lt;a href=""products.asp?id="&amp;cat_id1&amp;""" target=""_blank""&gt;"&amp;vbnewline<br>&#160;end if<br>&#160;for i=1 to depath<br>&#160;&#160; catstr=catstr&amp;"&amp;nbsp;"<br>&#160;Next<br>&#160;catstr=catstr&amp;cat_name1&amp;"&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;"&amp;vbnewline<br>&#160;m9=0<br>&#160;&#160;&#160;&#160;&#160;<br>&#160;sql2="select cat_name,cat_id from category where parent_id="&amp;parent_id1&amp;" and u_id="&amp;stype&amp;" order by cat_order asc"&#160;&#160;&#160;&#160;<br>&#160;set rs2=server.createobject("adodb.recordset")<br>&#160;set rs2=conn.execute(sql2)<br>&#160;if not rs2.eof then<br>&#160;&#160;&#160; depath=depath+4&#160; <br>&#160;&#160;&#160; call cat111(cat_id1,stype)<br>&#160;end if<br>&#160;rs2.close&#160;<br>&#160;set rs2=nothing&#160;<br>&#160;depath=depath-4&#160;<br>&#160;'******************上面是你要显示的******************'<br>&#160;j=j+1<br>rs1.movenext<br>loop<br>End If<br>rs1.close<br>set rs1=nothing<br>end Function<br>%&gt;<br>在使用这个函数之前加上<br>catstr=""<br>然后再call,下面的虚线加在css中的dotted_class里面,这样就搞定了。<br>注意:这里得到的是一个表格的行,要和其他行放在一起,不要加到td里面去了。

Read more+

13

2019-04
IIS无法启动错误的几种情况汇总

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">IIS无法启动、500错误综合解决方案.</font> </td> </tr></tbody></table> <p><span style="COLOR: #008000">1、重新设置IIS的IWAM账号密码和IUSR密码。(管理工具&#8212;〉计算机管理&#8212;〉本地用户和组&#8212;〉用户)<br>2、同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:c:\inetpub\adminscripts&gt;adsutil set w3svc/wamuserpass “yourpassword”<br>3、同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:c:\inetpub\adminscripts&gt;cscript synciwam.vbs -v</span></p> <p>如果最后出现Error:80110414错误<br>组件服务-&gt;计算机-&gt;我的电脑-&gt;COM+应用程序-&gt;IIS Out-Of-Process Pooled Applications-&gt;属性-&gt;标识。输入刚才设置的密码,确定退出,然后再次执行cscript synciwam.vbs -v</p> <p><strong>意外情况一:</strong>运行-&gt;cmd-&gt;输入net start msdtc,如果出现了该服务不能启动的错误提示。</p> <p>删除注册表中的键:<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC<br>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC<br>HKEY_CLASSES_ROOT\CID<br>停止MSDTC服务:net stop msdtc<br>卸载MSDTC服务:msdtc -uninstall<br>重新安装MSDTC服务:msdtc -install<br>重启电脑<br>启动该服务:net start msdtc</p> <p><strong>意外情况二:</strong>IIS出现The specified module could not be found解决方法(记得在IE的高级选项去掉“显示友好http 错误信息”)</p> <p>iis网站属性-&gt;目录安全性-&gt;匿名访问和身份验证控制<br>去掉允许iis控制密码</p> <p><strong>意外情况三:</strong>无法展开’COM+应用程序’</p> <p>MS DTC日志文件被误删了,cmd输入msdtc -resetlog重新创建日志文件即可</p> <p><strong>意外情况四:</strong>‘COM+ 应用程序中’展开后找不到IIS Out-Of-Process Pooled Applications</p> <p>输入cd %windir%/system32/inetsrv<br>输入rundll32 wamreg.dll, CreateIISPackage<br>注意:必须准确键入’CreateIISPackage’它区分大小写<br>输入regsvr32 asptxn.dll<br>关闭并重新打开’组件服务’</p>

Read more+

13

2019-04
ASP实例代码:asp操作Excel类

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">ASP实例代码:asp操作Excel类.</font> </td> </tr></tbody></table> <p><strong>asp操作Excel类</strong>:</p> <p><span class="code">&lt;%<br>'*******************************************************************<br>'使用说明<br>'Dim a<br>'Set a=new CreateExcel<br>'a.SavePath="x" '保存路径<br>'a.SheetName="工作簿名称"&#160; &#160;&#160;&#160;&#160;&#160;'多个工作表 a.SheetName=array("工作簿名称一","工作簿名称二")<br>'a.SheetTitle="表名称" &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'可以为空&#160;&#160;多个工作表 a.SheetName=array("表名称一","表名称二")<br>'a.Data =d '二维数组 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'多个工作表 array(b,c) b与c为二维数组<br>'Dim rs<br>'Set rs=server.CreateObject("Adodb.RecordSet")<br>'rs.open "Select id, classid, className from [class] ",conn, 1, 1<br>'a.AddDBData rs, "字段名一,字段名二", "工作簿名称", "表名称", &#160;&#160;&#160;&#160;true&#160; &#160; 'true自动获取表字段名<br>'a.AddData c, true , "工作簿名称", "表名称"&#160; &#160; 'c二维数组&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;true&#160;&#160;第一行是否为标题行<br>'a.AddtData e, "Sheet1"&#160; &#160;'按模板生成&#160;&#160;c=array(array("AA1", "内容"), array("AA2", "内容2"))<br>'a.Create()<br>'a.UsedTime&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;生成时间,毫秒数<br>'a.SavePath&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存路径<br>'Set a=nothing<br>'设置COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择MicrosoftExcel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限<br>'*******************************************************************<br>Class CreateExcel <br>&#160;&#160;&#160;&#160;Private CreateType_<br>&#160;&#160;&#160;&#160;Private savePath_<br>&#160;&#160;&#160;&#160;Private readPath_<br>&#160;&#160;&#160;&#160;Private AuthorStr&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 设置作者<br>&#160;&#160;&#160;&#160;Private VersionStr&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 设置版本<br>&#160;&#160;&#160;&#160;Private SystemStr&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 设置系统名称<br>&#160;&#160;&#160;&#160;Private SheetName_ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 设置表名<br>&#160;&#160;&#160;&#160;Private SheetTitle_ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 设置标题<br>&#160;&#160;&#160;&#160;Private ExcelData &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 设置表数据<br>&#160;&#160;&#160;&#160;Private ExcelApp &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem Excel.Application<br>&#160;&#160;&#160;&#160;Private ExcelBook<br>&#160;&#160;&#160;&#160;Private ExcelSheets<br>&#160;&#160;&#160;&#160;Private UsedTime_&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 使用的时间<br>&#160;&#160;&#160;&#160;Public TitleFirstLine&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rem 首行是否标题<br>&#160;&#160;&#160;&#160;Private Sub Class_Initialize()<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Server.ScriptTimeOut = 99999<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;UsedTime_ = Timer<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SystemStr&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;=&#160;&#160;&#160;&#160;"Lc00_CreateExcelServer"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;AuthorStr&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;=&#160;&#160;&#160;&#160;"Surnfu&#160;&#160;surnfu@126.com&#160;&#160;31333716"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;VersionStr&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;=&#160;&#160;&#160;&#160;"1.0"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not IsObjInstalled("Excel.Application") then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InErr("服务器未安装Excel.Application控件")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set ExcelApp = createObject("Excel.Application")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelApp.DisplayAlerts = false<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelApp.Application.Visible = false<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CreateType_ = 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;readPath_ = null<br>&#160;&#160;&#160;&#160;End Sub <br><br>&#160;&#160;&#160;&#160;Private Sub Class_Terminate()<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelApp.Quit<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Isobject(ExcelSheets) &#160;&#160;&#160;&#160;Then Set ExcelSheets&#160;&#160;&#160;&#160;=&#160;&#160;&#160;&#160;Nothing<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Isobject(ExcelBook) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Then Set ExcelBook&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;=&#160;&#160;&#160;&#160;Nothing<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Isobject(ExcelApp) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Then Set ExcelApp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;=&#160;&#160;&#160;&#160;Nothing<br>&#160;&#160;&#160;&#160;End Sub <br><br>&#160;&#160;&#160;&#160;Public Property Let ReadPath(ByVal Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Instr(Val, ":\")&lt;&gt;0 Then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;readPath_ = Trim(Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;readPath_=Server.MapPath(Trim(Val))<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;End Property<br><br>&#160;&#160;&#160;&#160;Public Property Let SavePath(ByVal Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Instr(Val, ":\")&lt;&gt;0 Then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;savePath_ = Trim(Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;savePath_=Server.MapPath(Trim(Val))<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;End Property<br>&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;Public Property Let CreateType(ByVal Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if Val &lt;&gt; 1 and Val &lt;&gt; 2 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CreateType_ = 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CreateType_ = Val<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;End Property<br>&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;Public Property Let Data(ByVal Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(Val) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InErr("表数据设置有误")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelData = Val<br>&#160;&#160;&#160;&#160;End Property<br>&#160;&#160;&#160;&#160;Public Property Get SavePath()<br>&#160;&#160;&#160;&#160;SavePath = savePath_<br>&#160;&#160;&#160;&#160;End Property<br>&#160;&#160;&#160;&#160;Public Property Get UsedTime()<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;UsedTime = UsedTime_<br>&#160;&#160;&#160;&#160;End Property<br>&#160;&#160;&#160;&#160;Public Property Let SheetName(ByVal Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(Val) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if Val = "" then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InErr("表名设置有误")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TitleFirstLine = true<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim TitleFirstLine(Ubound(Val))<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ik_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For ik_ = 0 to Ubound(Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TitleFirstLine(ik_) = true<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetName_ = Val<br>&#160;&#160;&#160;&#160;End Property<br>&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;Public Property Let SheetTitle(ByVal Val)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(Val) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if Val = "" then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InErr("表标题设置有误")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetTitle_ = Val<br>&#160;&#160;&#160;&#160;End Property<br>&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;Rem 检查数据<br>&#160;&#160;&#160;&#160;Private Sub CheckData()<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if savePath_ = "" then InErr("保存路径不能为空")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(SheetName_) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if SheetName_ = "" then InErr("表名不能为空")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if CreateType_ = 2 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(ExcelData) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InErr("数据载入错误,或者未载入")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Sub<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if isArray(SheetName_) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(SheetTitle_) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if SheetTitle_ &lt;&gt; "" then InErr("表标题设置有误,与表名不对应")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not IsArray(ExcelData) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InErr("表数据载入有误")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if isArray(SheetName_) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if GetArrayDim(ExcelData) &lt;&gt; 1 then InErr("表数据载入有误,数据格式错误,维度应该为一")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if GetArrayDim(ExcelData) &lt;&gt; 2 then InErr("表数据载入有误,数据格式错误,维度应该为二")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;End Sub<br>&#160;&#160;&#160;&#160;Rem 生成Excel<br>&#160;&#160;&#160;&#160;Public Function Create()<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call CheckData()<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isnull(readPath_) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelApp.WorkBooks.Open(readPath_) <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelApp.WorkBooks.add<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set ExcelBook = ExcelApp.ActiveWorkBook<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set ExcelSheets = ExcelBook.Worksheets<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if CreateType_ = 2 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ih_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For ih_ = 0 to Ubound(ExcelData)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call SetSheets(ExcelData(ih_), ih_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelBook.SaveAs savePath_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;UsedTime_ = FormatNumber((Timer - UsedTime_)*1000, 3)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Function<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if IsArray(SheetName_) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ik_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For ik_ = 0 to Ubound(ExcelData)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call CreateSheets(ExcelData(ik_), ik_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call CreateSheets(ExcelData, -1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelBook.SaveAs savePath_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;UsedTime_ = FormatNumber((Timer - UsedTime_)*1000, 3)<br>&#160;&#160;&#160;&#160;End Function <br>&#160;&#160;&#160;&#160;Private Sub CreateSheets(ByVal Data_, DataId_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Spreadsheet<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempSheetTitle<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempTitleFirstLine<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if DataId_&lt;&gt;-1 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if DataId_ &gt; ExcelSheets.Count - 1 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelSheets.Add()<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set Spreadsheet = ExcelBook.Sheets(1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set Spreadsheet = ExcelBook.Sheets(DataId_ + 1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if isArray(SheetTitle_) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempSheetTitle = SheetTitle_(DataId_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempSheetTitle = ""<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempTitleFirstLine = TitleFirstLine(DataId_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Spreadsheet.Name = SheetName_(DataId_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set Spreadsheet = ExcelBook.Sheets(1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Spreadsheet.Name = SheetName_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempSheetTitle = SheetTitle_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempTitleFirstLine = TitleFirstLine<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Line_ : Line_ = 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim RowNum_ : RowNum_ = Ubound(Data_, 1) + 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim LastCols_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if tempSheetTitle &lt;&gt; "" then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'Spreadsheet.Columns(1).ShrinkToFit=true '设定是否自动适应表格单元大小(单元格宽不变)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LastCols_ = getColName(Ubound(Data_, 2) + 1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with Spreadsheet.Cells(1, 1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.value = tempSheetTitle<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'设置Excel表里的字体 <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Bold = True '单元格字体加粗<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Italic = False '单元格字体倾斜<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Size = 20 '设置单元格字号<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.font.name="宋体" '设置单元格字体<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'.font.ColorIndex=2 '设置单元格文字的颜色,颜色可以查询,2为白色<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End with<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with Spreadsheet.Range("A1:"&amp; LastCols_ &amp;"1")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.merge '合并单元格(单元区域)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'.Interior.ColorIndex = 1 '设计单元络背景色<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.HorizontalAlignment = 3 '居中<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End with<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Line_ = 2<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RowNum_ = RowNum_ + 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim iRow_, iCol_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim dRow_, dCol_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempLastRange : tempLastRange = getColName(Ubound(Data_, 2)+1) &amp; (RowNum_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim BeginRow : BeginRow = 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if tempSheetTitle &lt;&gt; "" then BeginRow = BeginRow + 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if tempTitleFirstLine = true then BeginRow = BeginRow + 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if BeginRow=1 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with Spreadsheet.Range("A1:"&amp; tempLastRange)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Borders.LineStyle = 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.BorderAround -4119, -4138 '设置外框<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.NumberFormatLocal = "@"&#160; &#160;'文本格式<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Bold = False <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Italic = False <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Size = 10<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.ShrinkToFit=true <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end with<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with Spreadsheet.Range("A1:"&amp; tempLastRange)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Borders.LineStyle = 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.BorderAround -4119, -4138<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.ShrinkToFit=true <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end with<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with Spreadsheet.Range("A"&amp; BeginRow &amp;":"&amp; tempLastRange)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.NumberFormatLocal = "@" <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Bold = False <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Italic = False <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Size = 10<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end with<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if tempTitleFirstLine = true then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BeginRow = 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if tempSheetTitle &lt;&gt; "" then BeginRow = BeginRow + 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with Spreadsheet.Range("A"&amp; BeginRow &amp;":"&amp; getColName(Ubound(Data_, 2)+1) &amp; (BeginRow))<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.NumberFormatLocal = "@"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Bold = True <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Italic = False <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Font.Size = 12<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Interior.ColorIndex = 37<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.HorizontalAlignment = 3 '居中<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.font.ColorIndex=2<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end with<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For iRow_ = Line_ To RowNum_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For iCol_ = 1 To (Ubound(Data_, 2) + 1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dCol_ = iCol_ - 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if tempSheetTitle &lt;&gt; "" then dRow_ = iRow_ - 2 else dRow_ = iRow_ - 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If not IsNull(Data_(dRow_, dCol_)) then <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;with Spreadsheet.Cells(iRow_, iCol_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Value = Data_(dRow_, dCol_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End with<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set Spreadsheet = Nothing<br>&#160;&#160;&#160;&#160;End Sub <br>&#160;&#160;&#160;&#160;Rem 测试组件是否已经安装<br>&#160;&#160;&#160;&#160;Private Function IsObjInstalled(strClassString)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;On Error Resume Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IsObjInstalled = False<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Err = 0<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim xTestObj<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set xTestObj = Server.CreateObject(strClassString)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If 0 = Err Then IsObjInstalled = True<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set xTestObj = Nothing<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Err = 0<br>&#160;&#160;&#160;&#160;End Function<br>&#160;&#160;&#160;&#160;Rem 取得数组维数<br>&#160;&#160;&#160;&#160;Private Function GetArrayDim(ByVal arr)&#160; &#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetArrayDim = Null&#160; &#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim i_, temp&#160; &#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IsArray(arr) Then&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i_ = 1 To 60&#160; &#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;On Error Resume Next&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp = UBound(arr, i_)&#160; &#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Err.Number &lt;&gt; 0 Then&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetArrayDim = i_ - 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Err.Clear <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Function&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetArrayDim = i_&#160; &#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If&#160;&#160;<br>&#160;&#160;&#160;&#160;End Function <br>&#160;&#160;&#160;&#160;Private Function GetNumFormatLocal(DataType)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Select Case DataType<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case "Currency":<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetNumFormatLocal = "¥#,##0.00_);(¥#,##0.00)"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case "Time":<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetNumFormatLocal = "[$-F800]dddd, mmmm dd, yyyy"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case "Char":<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetNumFormatLocal = "@"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case "Common":<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetNumFormatLocal = "G/通用格式"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case "Number":<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetNumFormatLocal = "#,##0.00_"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case else :<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetNumFormatLocal = "@"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Select<br>&#160;&#160;&#160;&#160;End Function<br>&#160;&#160;&#160;&#160;Public Sub AddDBData(ByVal RsFlied, ByVal FliedTitle, ByVal tempSheetName_, ByVal tempSheetTitle_, DBTitle)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if RsFlied.Eof then Exit Sub<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim colNum_ : colNum_ = RsFlied.fields.count<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Rownum_ : Rownum_ = RsFlied.RecordCount<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ArrFliedTitle<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if DBTitle = true then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FliedTitle = ""<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ig_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For ig_=0 to colNum_ - 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FliedTitle = FliedTitle &amp; RsFlied.fields.item(ig_).name<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if ig_ &lt;&gt; colNum_ - 1 then FliedTitle = FliedTitle &amp;","<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if FliedTitle&lt;&gt;"" then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Rownum_ = Rownum_ + 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ArrFliedTitle = Split(FliedTitle, ",")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if Ubound(ArrFliedTitle) &lt;&gt; colNum_ - 1&#160;&#160;then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InErr("获取数据库表有误,列数不符")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempData : ReDim tempData(Rownum_ - 1, colNum_ - 1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ix_, iy_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim iz<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if FliedTitle&lt;&gt;"" then iz = Rownum_ - 2&#160;&#160;else iz = Rownum_ - 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For ix_ = 0 To iz<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For iy_ = 0 To colNum_ - 1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if FliedTitle&lt;&gt;"" then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if ix_=0 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempData(ix_, iy_) = ArrFliedTitle(iy_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempData(ix_ + 1, iy_) = RsFlied(iy_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempData(ix_ + 1, iy_) = RsFlied(iy_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempData(ix_, iy_) = RsFlied(iy_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RsFlied.MoveNext<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempFirstLine <br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if FliedTitle&lt;&gt;"" then tempFirstLine = true else tempFirstLine = false<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call AddData(tempData, tempFirstLine, tempSheetName_, tempSheetTitle_)<br>&#160;&#160;&#160;&#160;End Sub<br>&#160;&#160;&#160;&#160;Public Sub AddData(ByVal tempDate_, ByVal tempFirstLine_, ByVal tempSheetName_, ByVal tempSheetTitle_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(ExcelData) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelData = tempDate_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TitleFirstLine = tempFirstLine_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetName_ = tempSheetName_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetTitle_ = tempSheetTitle_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if GetArrayDim(ExcelData) = 1 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempArrLen : tempArrLen = Ubound(ExcelData)+1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve ExcelData(tempArrLen)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelData(tempArrLen) = tempDate_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve TitleFirstLine(tempArrLen)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TitleFirstLine(tempArrLen) = tempFirstLine_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve SheetName_(tempArrLen)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetName_(tempArrLen) = tempSheetName_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve SheetTitle_(tempArrLen)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetTitle_(tempArrLen) = tempSheetTitle_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempOldData : tempOldData = ExcelData<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelData = Array(tempOldData, tempDate_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TitleFirstLine = Array(TitleFirstLine, tempFirstLine_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetName_ = Array(SheetName_, tempSheetName_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetTitle_ = Array(SheetTitle_, tempSheetTitle_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;End Sub<br>&#160;&#160;&#160;&#160;Rem 模板增加数据方法<br>&#160;&#160;&#160;&#160;Public Sub AddtData(ByVal tempDate_, ByVal tempSheetName_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CreateType_ = 2<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(ExcelData) then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelData = Array(tempDate_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetName_ = Array(tempSheetName_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim tempArrLen : tempArrLen = Ubound(ExcelData)+1<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve ExcelData(tempArrLen)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExcelData(tempArrLen) = tempDate_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve SheetName_(tempArrLen)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SheetName_(tempArrLen) = tempSheetName_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br>&#160;&#160;&#160;&#160;End Sub<br>&#160;&#160;&#160;&#160;Private Sub SetSheets(ByVal Data_, DataId_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Spreadsheet<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set Spreadsheet = ExcelBook.Sheets(SheetName_(DataId_))<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Spreadsheet.Activate<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ix_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For ix_ =0 To Ubound(Data_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if not isArray(Data_(ix_)) then InErr("表数据载入有误,数据格式错误")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if Ubound(Data_(ix_)) &lt;&gt; 1 then InErr("表数据载入有误,数据格式错误")<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Spreadsheet.Range(Data_(ix_)(0)).value = Data_(ix_)(1)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set Spreadsheet = Nothing<br>&#160;&#160;&#160;&#160;End Sub<br>&#160;&#160;&#160;&#160;Public Function GetTime(msec_)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim ReTime_ : ReTime_=""<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if msec_ &lt; 1000 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReTime_ = msec_ &amp;"MS"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim second_<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;second_ = (msec_ \ 1000)<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (msec_ mod 1000)&lt;&gt;0 then<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;msec_ = (msec_ mod 1000) &amp;"毫秒"<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;msec_ = ""<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim n_, aryTime(2), aryTimeunit(2)<br>&#160;&#160;&#160;&#160;

Read more+

13

2019-04
web开发人员必须知道的Unicode与字符集相关知识

<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">web开发人员必须知道的Unicode与字符集相关知识.</font> </td> </tr></tbody></table> <p>原文地址<a href="http://www.joelonsoftware.com/articles/Unicode.html" target="_blank"><font color="#000000">:</font>http://www.joelonsoftware.com/articles/Unicode.html</a><br>作者:Joel Spolsky <br>译文:<a href="http://local.joelonsoftware.com/wiki/Talk:Chinese_(Simplified" target="_blank">http://local.joelonsoftware.com/wiki/Talk:Chinese_(Simplified</a>)</p> <p>&#160;</p> <h3><span class="mw-headline">每个程序员都绝对必须知道的关于字符集和Unicode的那点儿事(别找借口!)</span></h3> <h3> <span class="mw-headline"></span><span class="mw-headline">Unicode与字符集 </span> </h3> <p>&#160;</p> <p>你曾经是否觉得HTML中的"Content-Type"标签充满神秘?虽然你知道这个东西必须出现在HTML中,但对于它到底干吗你可能一无所知。 </p> <p>你是否曾经收到过来自你保加利亚朋友的邮件,到处都是"????&#160;??????&#160;???&#160;????"? </p> <p>我很失望,因为我发现许多软件开发人员到现在为止都还没有对字符集、编码、Unicode有一个清晰的认识,这是个事实。几年前,在测试FogBUGZ项目时,忽然想看看它能不能接收用日文写的电子邮件。这个世界上会有人用日文写电子邮件?我不知道。测试结果很糟糕。我仔细看了用来解析MIME (Multipurpose Internet Mail Extenisons)格式的邮件所用的ActiveX控件,发现了它在字符集上面做的蠢事。于是我们不得不重新写一段代码,先消除Active控件的错误,然后再完成正确的转换。类似的事情在我研究另一个商业库的时候同样发生了,这个库关于字符编码这部分的实现简直糟透了。我找到它的开发者,把存在问题的包指给他,他却表示对于此无能为力。像很多程序员一样,他只希望这个缺陷会被人们遗忘。 </p> <p>事实并非如他所愿。因为我发现,像PHP这么流行的网页开发工具,竟然在实现上也完全忽略了多种字符编码的存在(译者注:这篇文章写于2003年,现在的 PHP可能已经纠正了这个问题吧),盲目地只使用8个比特来表示字符,于是开发优秀的国际化的Web应用程序变成了一场梦。我想说,受够了。 </p> <p>我申明:在2003年,如果你是一个程序员,但你却对字符、字符集、编码和Unicode一无所知,那么你别让我抓到你。如果落在我手里,我会让你待在潜水艇里剥六个月的洋葱,我发誓。 </p> <p>另外,还有一件事: </p> <strong><center>这个一点都不难。</center></strong> <p>在这篇文章里,我所讲的是每一个工作中的程序员都应该知道的知识。所有以为"纯文本 = ASCII码 = 一个字符就是8比特"的人不单单错了,而且错得离谱。如果你仍然坚持使用这种方式编写程序,那么你比一个不相信细菌的存在医生好不到哪里去。所以在你读完这篇文章以前,不要再写半行代码。 </p> <p>在我开始之前,必须说明白,如果你已经了解了国际化,可能你会觉得这篇文章过于简单。没错,我的的确确是想架一座最短的桥,让任何人都可以理解发生了什么事,懂得如何写出可以在非英文语言环境是正常工作的代码。还得指出,字符处理仅仅是软件国际化中的一小部分,但一口吃不成个胖子,今天我们只看什么是字符集。</p> <p></p>

Read more+