</td>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
补充一下:对于第三种方法因为Recordset 用 Save方法后有时对于那些null的字段在row中不会有它的字段名,所以我现在通过去ElementType那里读取字段名,以保证不造成到时的Excel的纵列方位出错,但这个问题在.net里的DataSet确很好解决,因为DataSet中如果碰到这种null的数据它也会有<columnName />这样的空节点出现
经常看到有些人问怎么把Table的资料转到Excel里面去,很多人在碰到这个问题都先考虑用execl.appliction,我用过感觉很不好,首先必需要掌握它的一些内部用法,其次它在客户端使用时涉及安全性,使用不太好,以下给大家介绍三众方法: </xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
补充一下:对于第三种方法因为Recordset 用 Save方法后有时对于那些null的字段在row中不会有它的字段名,所以我现在通过去ElementType那里读取字段名,以保证不造成到时的Excel的纵列方位出错,但这个问题在.net里的DataSet确很好解决,因为DataSet中如果碰到这种null的数据它也会有<columnName />这样的空节点出现
方法一:用单纯的文本格式实现
该方法相当简单,以下给出代码,各位就容易明白
<% set fso=server.createobject("scripting.filesystemobject")
strExcelFile=server.MapPath("txtToExcel.xls")
if fso.fileExists(strExcelFile) then fso.deletefile strExcelFile
Set xslFile = fso.CreateTextFile(strExcelFile , True)
xslFile.WriteLine("df" & vbTab & "345" & vbLf & "fe" & vbTab & "mon" &vbLf)
xslFile.Close
set fso=nothing
response.write "OK"
%>
原理:
相信大家都知道,Excel是可以打开文本文件的(什么?你不知道,先回去做两个月的文员再来编程,太不懂打破规则了),而对于里面的文本内容Excel则会这样处理:如果遇到[制表符]Tab键则跳下一列,如果遇到[换行符]则换下一行,所以根据这个规则我们整理一下就可以产生单一表格式Excel文件了,
优点:
掌握简单,纯粹的文字整理而已(哈!原来不就是文字游戏而已,哼!提到游戏就精神了吧)
缺点:
效率较低,把一个较多内容的table转成Excel档要则执行较长的循环(),而文档格式只能是规则的行列格式,对表格不能做更多的设置
方法二:用OWC实现:
此方法也简单(OWC!不又要学新东西了?放心,非常简单,只要你具备男国足的头脑就OK,什么?还不够,拖出去海扁九九八十二下,不好意思,打上瘾,多了一下),只是少为人知而已(在网上我没看到其他人用过),同样先给出代码:
<script language="javascript">
function exportExcel(atblData){
if (typeof(EXPORT_OBJECT)!="object"){
document.body.insertAdjacentHTML("afterBegin","<OBJECT style='display:none' classid=clsid:0002E510-0000-0000-C000-000000000046 id=EXPORT_OBJECT></Object>");
}
with (EXPORT_OBJECT){
DataType = "HTMLData";
HTMLData =atblData.outerHTML;
try{
ActiveSheet.Export("C:\\owcToExcel.xls", 0);
alert('汇出完毕');
}
catch (e){
alert('汇出Excel表失败,请确定已安装Excel2000(或更高版本),并且没打开同名xls文件');
}
}
}
</script>
<table />
</td>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
补充一下:对于第三种方法因为Recordset 用 Save方法后有时对于那些null的字段在row中不会有它的字段名,所以我现在通过去ElementType那里读取字段名,以保证不造成到时的Excel的纵列方位出错,但这个问题在.net里的DataSet确很好解决,因为DataSet中如果碰到这种null的数据它也会有<columnName />这样的空节点出现