openXML spreadsheetdocument return byte-array für die MVC-Datei herunterladen

Ich versuche, um wieder eine openXML-spreadsheetdocument als byte [], welches ich dann nutzen kann zulassen, dass meine MVC, schicken Sie die Datei an einen Benutzer. hier ist mein spreadsheetdocument-Methode zur Rückgabe des byte-array

using (MemoryStream mem = new MemoryStream())
{
    SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.
        Create(mem, SpreadsheetDocumentType.Workbook);

    //Add a WorkbookPart to the document.
    WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
    workbookpart.Workbook = new Workbook();

    //Add a WorksheetPart to the WorkbookPart.
    WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet(new SheetData());

    //Add Sheets to the Workbook.
    Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
        AppendChild<Sheets>(new Sheets());

    SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();

    //row start
    for (int id = 0; id <= reports.Count(); id++)
    {
        if (id == 0)
        {
            Row contentRow = CreateContentRow(reports.ElementAt(id), true, 2 + id);
            sheetData.AppendChild(contentRow);
        }
        else
        {
            Row contentRow = CreateContentRow(reports.ElementAt((id - 1)), false, 2 + id);
            sheetData.AppendChild(contentRow);
        }
    }

    //Append a new worksheet and associate it with the workbook.
    Sheet sheet = new Sheet()
    {
        Id = spreadsheetDocument.WorkbookPart.
            GetIdOfPart(worksheetPart),
        SheetId = 1,
        Name = "mySheet"
    };
    sheets.Append(sheet);
    workbookpart.Workbook.Save();
    return mem.ToArray();
}

dann in mein MVC-controller habe ich es so nennen

return File(crs.CreateReportSpreadSheet(reports),"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Reports.xlsx");

den Datei-downloads, aber wenn Sie gehen zu öffnen zeigt es eine Fehlermeldung, dass die Datei beschädigt ist. Gibt es irgendeinen anderen Weg, um Ihnen zu ermöglichen, diese Datei zu downloaden?

Haben Sie überprüft, die generierte Datei einzeln? Ich meine , ist Ihre Datei korrekt geöffnet wird, wenn Sie speichern es auf der Festplatte zu "mem.ToArray ()" - position? Ich denke, es sollte ein problem mit der generierten Datei nicht die Art und Weise Sie es zurück an den client.

InformationsquelleAutor Canvas | 2014-02-28

Schreibe einen Kommentar