CSV文件显示HTML页面源

时间:2016-01-26 12:59:55

标签: c# html asp.net visual-studio-2010 csv

我正在从ASP .NET页面导出CSV文件但不知何故它包含HTML代码并且应该导出的数据(即29行)不完整(即从所谓的29行,只有17行显示,然后HTML一路向下)。

CSV File Preview

以下是我的代码:

    private void WriteToCSV()
    {
        var clientId = int.Parse(ddlClients.SelectedValue);
        var taskTypeId = int.Parse(ddlTaskType.SelectedValue);

        var mtComponent = new MainTableComponent();
        var data = mtComponent.GetMainTableRecords(clientId, 0, taskTypeId);

        if (data == null || data.Count == 0)
        {
            ShowAlertMessage("No available data to export.");
            return;
        }

        var callerId = GetClientList().FirstOrDefault(x => x.ClientId == clientId).CallerId;

        string attachment = string.Concat("attachment; filename=CallList_", ddlClients.SelectedItem.Text,
            "_", ddlTaskType.SelectedItem.Text, "_", DateTime.Now.ToString("yyyyMMdd"), ".csv");

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.AddHeader("content-disposition", attachment);
        HttpContext.Current.Response.ContentType = "text/csv";
        HttpContext.Current.Response.AddHeader("Pragma", "public");

        HttpContext.Current.Response.Write("row,phone1,phone2,phone3,caller_id");

        foreach (var d in data)
            WriteUserInfo(d, callerId);

        HttpContext.Current.Response.End();
    }

    private void WriteUserInfo(MainTableEntity person, string callerId)
    {
        HttpContext.Current.Response.Write(Environment.NewLine);

        StringBuilder stringBuilder = new StringBuilder();
        AddComma(person.RowNumber.ToString(), stringBuilder);
        AddComma(FormatNumber(person.MobileNumber), stringBuilder);
        AddComma("", stringBuilder);
        AddComma("", stringBuilder);
        AddComma(callerId, stringBuilder);
        stringBuilder.Remove(stringBuilder.Length - 1, 1);

        HttpContext.Current.Response.Write(stringBuilder.ToString());
    }

    private void AddComma(string value, StringBuilder stringBuilder)
    {
        value.Replace(",", "");
        stringBuilder.Append(value).Append(",");
    }

    private string FormatNumber(string number)
    {
        if (string.IsNullOrWhiteSpace(number))
            return null;

        string n = number.Replace('-', ' ').Replace(" ", "").Trim();

        return n;
    }

有趣的是,这不会发生在我的本地计算机和测试环境中。它只发生在我们的生产环境中。

感谢任何帮助。非常感谢你!

0 个答案:

没有答案