HTML附加了导出的.csv文档

时间:2015-08-21 05:40:18

标签: c# html .net csv response

我正在使用逗号分隔的变量生成一个字符串并尝试导出它。问题是整个.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>

由于这种情况发生,我无法弄清楚这个问题的根本原因。如果有人能够解释原因和解决方案,那将是非常有帮助的。感谢。

1 个答案:

答案 0 :(得分:2)

你只需要添加

Response.End();

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