Ошибка экспорта MVC 4 в Excel

У меня есть следующий код в контроллере и приложении MVC 4

    Response.AddHeader("Content-Disposition", "attachment; filename=export.xml");
    Response.AddHeader("Content-type", "vnd.openxmlformats-officedocument.spreadsheetml.sheet");

    var rows = data.Split('\n');
    var sheet = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + Environment.NewLine;
    sheet += "<?mso-application progid=\"Excel.Sheet\"?>" + Environment.NewLine;

    sheet += "<ss:Workbook xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:html=\"http://www.w3.org/tr/rec-html40\">" + Environment.NewLine;
    sheet += "<ss:Worksheet ss:Name=\"Sheet1\">" + Environment.NewLine;
    sheet += "<ss:Table>" + Environment.NewLine;

    foreach (var r in rows)
    {
        sheet += "<ss:Row>" + Environment.NewLine;

        var columns = r.Split(',');

        foreach (var column in columns)
        {
            sheet += "<ss:Cell>" + Environment.NewLine;
            sheet += "<ss:Data ss:Type=\"String\">" + column + "</ss:Data>" + Environment.NewLine;
            sheet += "</ss:Cell>" + Environment.NewLine;
        }
        sheet += "</ss:Row>" + Environment.NewLine;
    }
    sheet += "</ss:Table>" + Environment.NewLine;
    sheet += "</ss:Worksheet>" + Environment.NewLine;
    sheet += "</ss:Workbook>" + Environment.NewLine;

    return Content(sheet);

Если я поставлю точку останова и скопирую значение переменной листа в блокнот и сохраню его локально на моем компьютере как export.xml, я смогу открыть этот файл нормально, и у него не будет проблем.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я позволяю этому методу в контроллере продолжать работу, я получаю приглашение в браузере открыть файл, чего я и ожидал, но когда я нажимаю кнопку «Открыть», открывается Excel, а затем я получаю сообщение об ошибке сообщение. Сообщение об ошибке, которое я получаю,

Microsoft Excel не может больше открывать или сохранять документы из-за нехватки доступной памяти или места на диске.

Чего мне не хватает, чтобы этот контроллер передал правильную информацию обратно в браузер.


person Paul Cavacas    schedule 28.03.2013    source источник
comment
social.technet.microsoft .com/forums/en-US/ попробуйте это   -  person Cristi Pufu    schedule 29.03.2013
comment
Эта ссылка не помогает, это не совсем то же самое.   -  person Paul Cavacas    schedule 29.03.2013