首先让我说明我的最终目标是在我们网站的页面上创建导出到逗号分隔文件 (.csv) 或导出到 Excel 按钮。我们的网站目前有一个以 XML 格式返回数据的搜索机制。该 XML 被加载到 Microsoft.XMLDOM 对象中。
Dim objXMLDom
Set objXMLDOM = Server.CreateObject("Microsoft.XMLDOM")
...
Function LoadXML(strXML)
objXMLDOM.loadXML(strXML)
end function
此 XML 数据被解析为一个名为的变量myData
,并使用不同的列和行显示在 HTML 网格中。就像我上面说的,理想情况下我想在页面上添加一个可以导出到 csv 或 Excel 的按钮。我四处搜索,发现当代码在经典 ASP 中时这不是一件容易的事......所以我找到了一个半解决方法。
解决方法是使用Downloadify。它是一个 jquery/flash 脚本,允许您将代码复制到 DOM 元素的 HTML 中,然后在客户端将所有数据拉回。它在大多数情况下都有效......我遇到的唯一问题是添加一个换行符。我认为它会被删除进入 HTML 并再次退出。
这是我如何将数据放入元素的代码
for (i = 0; i < <%=RowCount %>; i++) {
parent.document.getElementById('data').innerHTML += '\n';
for (j = 0; j < <%=columnCount%>; j++) {
parent.document.getElementById('data').innerHTML += myData[i][j];
parent.document.getElementById('data').innerHTML += ',';
}
};
这是我用来把它拉回来的:
function load() {
Downloadify.create('downloadify', {
filename: function() {
return document.getElementById('filename').value;
},
data: function() {
return document.getElementById('data').value;
},
onComplete: function() { alert('Your File Has Been Saved!'); },
onCancel: function() { alert('You have cancelled the saving of this file.'); },
onError: function() { alert('You must put something in the File Contents or there will be nothing to save!'); },
swf: 'media/downloadify.swf',
downloadImage: 'images/download.png',
width: 100,
height: 30,
transparent: true,
append: false
}
);
}
我真的不太了解Flash,但是我尝试放入不同的字符串('<br>'
, ' '
, even ";:;"
)并data : function
使用Flash的replace方法替换它们,但它似乎挂起并且永远不会完成处理(我认为这是因为我需要将替换方法放在一个while循环中,因为替换方法只替换一个实例并且我有很多)。
任何帮助将不胜感激。先感谢您。