0

首先让我说明我的最终目标是在我们网站的页面上创建导出到逗号分隔文件 (.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>', '&#13;', even ";:;")并data : function使用Flash的replace方法替换它们,但它似乎挂起并且永远不会完成处理(我认为这是因为我需要将替换方法放在一个while循环中,因为替换方法只替换一个实例并且我有很多)。

任何帮助将不胜感激。先感谢您。

4

2 回答 2

1

为什么不让 ASP 与 html 页面一起创建一个 .csv 文件?这似乎会容易得多。

于 2012-05-29T17:28:17.820 回答
0

当我同时使用 Flash 和 ASP 时,我曾经遇到过这样的问题。我记得从 Flash 调用 ASP 并挂起。我认为解决方法是在 ASP 页面的末尾添加一个“response.end”。这似乎告诉服务器,“完成。现在回到 Flash。” 抱歉,我不能再确定了。很久以前了,我找不到代码。

于 2012-06-01T07:35:01.090 回答