Heim >Backend-Entwicklung >C++ >Wie exportiere ich Daten mit EPPlus effizient in eine Excel-Datei?

Wie exportiere ich Daten mit EPPlus effizient in eine Excel-Datei?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-05 21:30:41323Durchsuche

How to Efficiently Export Data to an Excel File Using EPPlus?

Wie exportiere ich nach Excel?

Die Anleitung zeigt nicht, wie man eine Excel-Datei erstellt, sondern einen Hack, der eine HTML-Datei mit einer Tabelle erstellt . Excel versucht, CSV- oder HTML-Dateien mit Tabellen mit Standardeinstellungen zu importieren, was oft fehlschlägt.

Es ist viel einfacher, eine richtige Excel-Datei mit einer Bibliothek wie EPPlus zu erstellen.
I Ich bin mir sicher, dass dies schon einmal beantwortet wurde, aber ich kann keine Antwort finden, die sowohl zeigt, wie man eine Excel-Datei aus Daten erstellt als auch den richtigen Inhaltstyp für eine XLSX-Datei festlegt Datei.

EPPlus stellt die Methoden LoadFromDataTable und LoadFromCollection bereit, um einen Excel-Bereich mit Daten zu füllen, die aus einer DataTable oder einer generischen Sammlung abgerufen wurden. Die Spalten- oder Eigenschaftsnamen werden jeweils als Überschriften verwendet.

public ActionResult ExportData()
{

    //Somehow, load data to a DataTable

    using (ExcelPackage package = new ExcelPackage())
    {
        var ws = package.Workbook.Worksheets.Add("My Sheet");
        //true generates headers
        ws.Cells["A1"].LoadFromDataTable(dataTable, true);

        var stream = new MemoryStream();
        package.SaveAs(stream);

        string fileName = "myfilename.xlsx";
        string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

        stream.Position = 0;
        return File(stream, contentType, fileName);
    }
}

LoadFromDataTable oder LoadFromCollection geben einen Excel-Zellenbereich zurück, der zum Formatieren der Tabelle verwendet werden kann:

var range=ws.Cells["A1"].LoadFromDataTable(table);
range.Style.Numberformat.Format = "#,##0.00";
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;

Sie können auch anwenden einen Tabellenstil für den Bereich oder übergeben Sie den gewünschten Stil an LoadFromDataTable oder LoadFromCollection, zB:

ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);

Das Githup-Wiki der Bibliothek zeigt, wie man das Ergebnis formatiert, Formeln, PivotTables generiert, Tabellen verarbeitet usw.

Das Speichern in einem MemoryStream kann ein Problem sein, wenn Sie etwas erstellen möchten ein relativ großes Blatt. Das zweimalige Schreiben derselben Daten, einmal in den MemoryStream und das anschließende Kopieren in die Ausgabe, verschwendet Zyklen. Von einer MVC-Aktion direkt in den Ausgabestream zu schreiben ist jedoch eine schlechte Praxis. Der Trick besteht darin, ein benutzerdefiniertes FileResult zu erstellen, das EPPlus-Pakete verarbeitet, und dieses anstelle des von File zurückgegebenen FileResult zurückzugeben, z. B.:

public class EpplusResult:FileResult
{
    public EpplusResult(ExcelPackage package)
        : base("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    {
        if (package == null)
        {
            throw new ArgumentNullException("package");
        }

        Package = package;
    }

    public ExcelPackage Package { get; private set; }

    protected override void WriteFile(HttpResponseBase response)
    {
        // grab chunks of data and write to the output stream
        Stream outputStream = response.OutputStream;
        using (Package)
        {
            Package.SaveAs(outputStream);
        }
    }
}

Dadurch können Sie die folgende Aktion schreiben:

public FileResult ExportData()
{

    ExcelPackage package = new ExcelPackage();
    var ws = package.Workbook.Worksheets.Add("My Sheet");       
    ...
    ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);

    return new EpplusResult(package){FileDownloadName = "SomeFile.xlsx"};
}

Das obige ist der detaillierte Inhalt vonWie exportiere ich Daten mit EPPlus effizient in eine Excel-Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn