HTML 附加导出的 .csv 文档

HTML is appended with exported .csv document

我正在生成一个包含逗号分隔变量的字符串并尝试导出它。问题是整个 .html 页面与导出的 .csv 文件一起被附加。

我有两个代码实例,一个在本地服务器,另一个在测试服务器。我在两者中使用相同的数据库,两者的代码库仍然相同,导出 .csv 文件时出现问题。

以下是我用于导出的代码...

//name - Name of File to save
//text - Comma separated string
private void ExportToCSV(string fileName, string text)
    {
        Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");
        if (text != null && text.Length > 0)
        {
            Response.AddHeader("Content-Length", text.Length.ToString());               
            Response.Output.Write(text);
        }
    }

我已经尝试使用 Response.Write(text),但仍然遇到同样的问题。

这是我在获取导出的 .csv 文件时得到的输出...

SEARCH DATE,USER TYPE,CITY
20-08-2015,TM,Chicago
20-08-2015,TM,New York
20-08-2015,TM,London
20-08-2015,TM,London
20-08-2015,TM,London
20-08-2015,TM,Cape Town
20-08-2015,TM,Mumbai
20-08-2015,TM,Ottawa
20-08-2015,TM,Mumbai
20-08-2015,TM,Istanbul

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
    Search Report
</title>
    <script src="Jquery/jquery-1.9.1.js" type="text/javascript"></script>

    <script src="Jquery/jquery-ui-1.9.2.custom/js/jquery-ui-1.9.2.custom.js"
        type="text/javascript"></script>
    <script type="text/javascript">
        var t = false;
        window.alert = function(message) {
            $(document.createElement('div'))
        .attr({ title: 'Alert', 'class': 'alert' })
        .html(message)
        .dialog({
            buttons: { OK: function() { $(this).dialog('close'); } },
            close: function() { $(this).remove(); },
            draggable: true,
            modal: true,
            resizable: false,
            width: 'auto'
        });
        };

        $(function() {

            var useragent = navigator.userAgent;
            var bName = (useragent.indexOf('Opera') > -1) ? 'Opera' : navigator.appName;
            var pos = useragent.indexOf('MSIE');
            var bVer = "";
            if (pos > -1) {
                $('li').has('ul').mouseover(function() {
                    $(this).children('ul').show();
                }).mouseout(function() {
                    $(this).children('ul').hide();
                })
            }


        });

    </script>

    .
    .
    .
    .
    .
    .

        </div>
    </div>
</body>
</html>

我无法找出导致此问题发生的根本原因。如果有人可以解释原因以及解决方案,那将是巨大的帮助。谢谢

你只需要添加

Response.End();

我还会添加Response.ContentType = "text/csv";以便浏览器正确识别