Detaillierter Implementierungsplan für den Vue-Frontend-Export von Excel-Dateien

Detaillierter Implementierungsplan für den Vue-Frontend-Export von Excel-Dateien

1. Technologieauswahl

1. Implementiert mit dem vue-json-excel-Plugin

Vorteile: einfach und bequem, leicht zu bedienen, sofort einsatzbereit;

Nachteile: Unterstützt keine Excel-Tabellenstileinstellungen und die unterstützten Funktionen sind relativ einfach;

2. Implementierung im xlsx-Stil basierend auf dem SheetJS-xlsx-Parser (empfohlen)

Vorteile: unterstützt viele Formate, unterstützt Excel-Tabellenstileinstellungen, leistungsstarke Funktionen, hohe Steuerbarkeit, kann Excel lesen und exportieren;

Nachteile: Die Verwendung ist komplizierter, die Einstiegskosten sind hoch und für erweiterte Funktionen sind Gebühren erforderlich. Diese Funktion kann jedoch mithilfe des xlsx-Stils erreicht werden.

2. Technische Umsetzung

Implementiert mit dem Plugin „vue-json-excel“

1. Installieren Sie die Abhängigkeit vue-json-excel

npm install -S vue-json-excel

2. Registrieren Sie das Plugin bei der Vue-Instanz

importiere Vue von „vue“;
importiere JsonExcel aus „vue-json-excel“;

Vue.component("downloadExcel", JsonExcel);

3. Nutzung

Im ausgehenden Paket die Download-Excel-Komponente, die das Exportereignis auslösen muss

Informationen zu den von dieser Komponente unterstützten Eigenschaften finden Sie in der GitHub-Dokumentation von vue-json-excel.

<download-excel :data="json_data">
  Daten herunterladen
  <img src="download_icon.png" />
</download-excel>

Zunächst müssen Sie den in die Excel-Datei exportierten Dateninhalt verarbeiten. Dabei handelt es sich um die folgenden Daten:

  • Tabellenkopfname Daten json_fields: Sie können die zu exportierenden Felder auswählen und den Feldern Beschriftungen zuweisen. Der Datentyp ist Objekt, der Schlüssel entspricht der Bezeichnung, der Wert entspricht dem JSON-Feld und die Daten in denselben Feldern wie die Datenliste werden exportiert. Wenn Sie die exportierten Daten anpassen müssen, können Sie eine Rückruffunktion definieren.
  • Tabellendaten json_data: Dieser Datentyp ist ein Array, das den zu exportierenden Dateninhalt speichert;
lass json_fields = {
  // fieldLabel (Name der Tabellenüberschrift), attributeName (entsprechender Feldname)
  Feldbezeichnung: Attributname,
  // Verwenden Sie einen Callback, um die exportierten Daten anzupassen anotherFieldLabel: {
    Feld: anotherAttributeName,
    Rückruf: (Wert) => {
      gibt „formatierten Wert ${value}“ zurück;
    },
  },
};

lass json_data = [
    {
        Attributname: Wert1,
        anotherAttributeName: Wert2
    },
    {
        Attributname: Wert3,
        anotherAttributeName: Wert4
    }
];

Nach der Verarbeitung der Daten können Sie die Daten an die Download-Excel-Komponente übergeben. Diese Komponente hat keinen Stil. Sie müssen nur den Stil des darin enthaltenen Elements festlegen.

<Download-Excel
  Klasse="btn btn-default"
  :Daten="json_data"
  :Felder="json_fields"
  worksheet="Mein Arbeitsblatt"
  name="dateiname.xls"
>
  Laden Sie Excel herunter (Sie können es mit HTML-Code anpassen!)
</download-excel>

In tatsächlichen Geschäftsszenarien bedeutet das Exportieren von Tabellendaten jedoch normalerweise das Exportieren aller Daten in der Tabelle. Daher ist es während des Exportvorgangs erforderlich, die Anforderungsschnittstelle aufzurufen, um alle Daten in der Tabelle abzurufen. Das Aufrufen der Schnittstelle zum Abrufen von Daten ist ein asynchroner Ausführungsprozess. Dieses Plug-In bietet auch für dieses Szenario eine Lösung.

Ähnliche Fälle:

<Vorlage>
    <div id="app">
        <excel herunterladen
            Klasse = "btn"
            :fetch = "Daten abrufen"
            :Felder = "json_Felder"
            :vorher-generieren = "Download starten"
            :before-finish = "Download beenden">
            Excel herunterladen
        </downloadexcel>
    </div>
</Vorlage>

<Skript>
importiere DownloadExcel aus „vue-json-Excel“;
importiere Axios von „Axios“;

Standard exportieren {
    Name: "App",
    Komponenten:
        Excel herunterladen,
    },
    Daten(){
        zurückkehren {
            json_felder: {
                'Vollständiger Name': 'Name',
                'Datum': 'Datum',
            },
        }
    }, //Daten
    Methoden:{
        asynchrones Abrufen von Daten () {
            const Antwort = warte auf axios.get(URL);
            gib response.data.holidays zurück;
        },
        startDownload(){
            alert('Laden anzeigen');
        },
        Download beenden(){
            alert('Laden ausblenden');
        }
    }
};
</Skript>

Implementierung im xlsx-Stil basierend auf dem SheetJS-xlsx-Parser (empfohlen)

Da dieser Teil sehr viel Inhalt beinhaltet, wird diese Funktion später bei Bedarf gekapselt

Hier erklären wir lediglich die Verwendung des gepackten export2Excel und erläutern zunächst nicht die Prinzipien.

Dieses Plug-In unterstützt nicht nur den Export von Excel-Dateien, sondern auch den Import von Dateien. Darüber hinaus unterstützt der Export von Excel-Dateien nicht nur JSON-Daten, sondern auch den Tabellenexport.

Da es sich bei den erweiterten Funktionen der von sheetjs-xlsx bereitgestellten Tool-Bibliothek um kostenpflichtige Elemente handelt, z. B. das Ändern des Tabellenstils, wurde das auf sheetjs-xlsx basierende Plug-In im xlsx-Stil ausgewählt.

Kompatibilität:

1. Abhängigkeiten installieren

npm install -S xlsx
npm install -S xlsx-Stil

Das xlsx-Plugin meldet bei Verwendung einen Fehler. Die offizielle Lösung für dieses Problem besteht darin, der Konfigurationsdatei vue.config.js im Stammverzeichnis den folgenden Code hinzuzufügen:

modul.exporte = {
	konfigurierenWebpack: {
    	Äußerlichkeiten: {
      		'./cptable': 'var cptable'
    	}
  	}
}

Eine andere Lösung besteht darin, den Quellcode zu ändern. Dies wird jedoch nicht empfohlen und hier nicht erläutert.

2. Nutzung

Hier ist die Methode zum Exportieren von Excel-Dateien. Es gibt zwei Lösungen zum Implementieren der Dateidownloadfunktion:

  • Verwenden Sie über die Dateidownloadfunktion des A-Tags die Methode URL.createObjectURL, um einen Download-Link zu generieren (die in diesem Artikel verwendete Methode).
  • Die Dateidownloadfunktion wird durch das Dateispar-Plug-In eines Drittanbieters realisiert.

Das Plugin js-xlsx verfügt über entsprechende Funktionen, um die Konvertierung verschiedener Datenformate zu erleichtern:

  • aoa_to_sheet konvertiert ein Array von Arrays von JS-Daten in ein Arbeitsblatt.
  • json_to_sheet konvertiert ein Array von JS-Objekten in ein Arbeitsblatt.
  • table_to_sheet konvertiert ein DOM TABLE-Element in ein Arbeitsblatt.
  • sheet_add_aoa fügt einem vorhandenen Arbeitsblatt ein Array von Arrays mit JS-Daten hinzu.
  • sheet_add_json fügt einem vorhandenen Arbeitsblatt ein Array von JS-Objekten hinzu.

Nachfolgend sehen Sie den spezifischen Code der gekapselten Funktion export2Excel. Sie müssen den Code lediglich in die erstellte Datei export2Excel.js kopieren:

/**
 * erstellt von lwj
 * @file Export-Plugin-Paket */

importiere * als styleXLSX aus „xlsx-style“

/**
 * String in ArrayBuffer konvertieren 
 * @method Typkonvertierung* @param {String} [s] wordBook-Inhalt* @return {Array} binäres Stream-Array*/
Funktion s2ab(s) {
    lass buf = null;

    wenn (Typ des ArrayBuffer !== 'undefiniert') {
        buf = neuer ArrayBuffer(s.length);
        let view = neues Uint8Array(buf);

        für (sei i = 0; i != s.Länge; ++i) {
            Ansicht[i] = s.charCodeAt(i) & 0xFF;
        }

        Puffer zurückgeben;
    }

    buf = neues Array(s.Länge);

    für (sei i = 0; i != s.Länge; ++i) {

        //In Binärstrom konvertieren buf[i] = s.charCodeAt(i) & 0xFF;
    }

    Puffer zurückgeben;
}

/**
 * Option 1: Download mit URL.createObjectURL (unten optional)
 * Lösung 2: Laden Sie Dateien über das File-Saver-Plugin herunter * @method file download * @param {Object} [obj] Inhalt exportieren Blob-Objekt * @param {String} [fileName] Der herunterzuladende Dateiname ist der generierte Dateiname * @return {void}
 */ 
Funktion saveAs (Objekt, Dateiname) {
    let aLink = document.createElement("a");

    wenn (Typ von Objekt == 'Objekt' und Objekt Instanz von Blob) {
        aLink.href = URL.createObjectURL(obj); // Blob-Adresse erstellen}
    
    aLink.download = Dateiname;
    aLink.click();
    setzeTimeout(Funktion () {
        URL.revokeObjectURL(obj);
    }, 100);
}

/**
 * @method Datenexport Excel
 * @param {Object} [worksheets] Arbeitsblatt-Dateninhalt* @param {String} [fileName='ExcelFile'] Excel-Dateiname exportieren* @param {String} [type='xlsx'] Dateityp exportieren*/
Export-Standardfunktion export2Excel ({
    Arbeitsblätter, 
    Dateiname = "Excel-Datei",
    Typ = "xlsx"
} = {}) {

    let sheetNames = Object.keys(Arbeitsblätter);
    let Arbeitsmappe = {
        SheetNames: sheetNames, //Gespeicherte Arbeitsblattnamen Sheets: Arbeitsblätter
    };

    // Konfigurationselemente von Excel let wopts = {  
        bookType: Typ, // Generierter Dateityp bookSST: false, // Ob eine Shared String Table generiert werden soll. Die offizielle Erklärung ist, dass die Generierungsgeschwindigkeit abnimmt, wenn sie aktiviert ist, aber die Kompatibilität mit iOS-Geräten mit niedrigerer Version ist Typ: „binär“  
    }

    // versucht, die Arbeitsmappe zu schreiben
    let wbout = styleXLSX.write(Arbeitsmappe, wopts);
    lass wbBlob = neuer Blob([s2ab(wbout)], {
        Typ: „Anwendung/Oktett-Stream“
    });

    speichernUnter(wbBlob, Dateiname + '.' + Typ);
}

Dabei sind einige Punkte zu beachten:

  1. Der Standardname der Exportfunktion von xlsx und xlsx-style ist XLSX. Wenn Sie sie gleichzeitig importieren, müssen Sie den Alias ​​festlegen, um Probleme beim Überschreiben von Funktionen zu vermeiden.
  2. Wenn Sie das xlsx-Plugin nicht verwenden möchten, können Sie auch das xlsx-Style-Plugin verwenden. Sie müssen lediglich die zu exportierenden Daten in das Arbeitsblattformatobjekt konvertieren. Das Prinzip besteht darin, die exportierten Daten in das vom Arbeitsblatt angegebene Datenformat zu konvertieren. Weitere Einzelheiten finden Sie in der js-xlsx-Dokumentbeschreibung. (Sie können versuchen, es selbst zu implementieren.)

Dann müssen Sie es nur dort aufrufen, wo Sie nach Excel exportieren möchten. Wenn Sie Anforderungen an den Exporttabellenstil haben, können Sie lernen, wie Sie den Tabellenstil konfigurieren. Die spezifische Konfigurationsmethode kann im Dokument „xlsx-style“ angezeigt werden.

Wenn die Daten als JSON exportiert werden, müssen der Tabellenkopfname und die Felder zugeordnet werden.

Ähnliche Fälle:

XLSX aus „xlsx“ importieren;
importiere export2Excel aus '@/assets/utils/export2Excel';

// JSON-Format let jsonTable = [{
    "sheet1id": 1,
    "Header 1": "Daten 11",
    "Header 2": "Daten 12",
    "Header 3": "Daten 13",
    "Überschrift 4": "Daten 14"
}, {
    "sheet1id": 2, 
    "Header 1": "Daten 21",
    "Header 2": "Daten 22",
    "Header 3": "Daten 23",
    "Überschrift 4": "Daten 24"
}];

// 2D-Array-Format let aoa = [
    ['sheet2id', 'Überschrift 1', 'Überschrift 2', 'Überschrift 3', 'Überschrift 4'],
    [1, 'Daten 11', 'Daten 12', 'Daten 13', 'Daten 14'],
    [2, 'Daten 21', 'Daten 22', 'Daten 23', 'Daten 24']
]

Funktion handleExportExcel () {
    
    // Verwenden Sie die integrierte Tool-Bibliothek von XLSX, um JSON in Tabellen zu konvertieren
    : Lassen Sie Arbeitsblatt1 = XLSX.utils.json_to_sheet(jsonTable);

    // Verwenden Sie die integrierte Tool-Bibliothek von XLSX, um aoa in ein Blatt zu konvertieren
    Lassen Sie Arbeitsblatt2 = XLSX.utils.aoa_to_sheet(aoa);

    // Excel-Tabellenstil festlegen worksheet1["B1"].s = { 
        Schriftart: 
            Gr.: 14, 
            fett: wahr, 
            Farbe: 
                rgb: "FFFFAA00"
            } 
        }, 
        füllen: { 
            Hintergrundfarbe: { 
                indexiert: 64 
            }, 
            fgFarbe: { 
                rgb: "FFFF00" 
            } 
        } 
    };

    // Zellen zusammenführen worksheet1["!merges"] = [{
        s: { c: 1, r: 0 },
        e: { c: 4, r: 0 }
    }];

    export2Excel({
        Arbeitsblätter:
            Blatt1: Arbeitsblatt1,
            Blatt2: Arbeitsblatt2
        }, // Excel-Daten exportieren, Schlüssel stellt den Arbeitsblattnamen dar, Wert stellt die Blattdaten des entsprechenden Arbeitsblatts dar, unterstützt den Export mehrerer Arbeitsblätter Dateiname: ‚Mein Excel‘, // Dateiname exportieren Typ: ‚xlsx‘ // Dateiexporttyp });
}

3. Referenzen

  • Dokumentation zum Vue-JSON-Excel-Plugin
  • sheetjs-xlsx-Toolbibliothek
  • Werkzeugbibliothek im XLSX-Stil

Zusammenfassen

Dies ist das Ende dieses Artikels über das Exportieren von Excel-Dateien über das Vue-Frontend. Weitere relevante Vue-Export-Excel-Dateien finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue implementiert die Funktion zum Exportieren von Excel-Tabellen
  • Detaillierte Erklärung zum Exportieren von Excel in ein Vue-Projekt
  • Implementierungscode zum Exportieren von Excel-Tabellen in Vue
  • Fallanalyse zum Exportieren von Excel-Tabellen in vue.js
  • Fallstricke und Lösungen beim Excel-Export mit Vue
  • Der gesamte Prozessbericht der Vue-Exportfunktion für Excel
  • Detailliertes Tutorial für Anfänger zum Exportieren von Vue nach Excel

<<:  Zusammenfassung einiger Gedanken zur Binlog-Optimierung in MySQL

>>:  Detailliertes Tutorial zur Docker-Compose-Bereitstellung und Konfiguration von Jenkins

Artikel empfehlen

So stellen Sie ElasticSearch in Docker bereit

1. Was ist ElasticSearch? Elasticsearch wird eben...

Anwendungsbeispiele für die MySQL-Volltextsuche

Inhaltsverzeichnis 1. Umweltvorbereitung 2. Daten...

Analyse mehrerer Situationen, in denen der MySQL-Index fehlschlägt

1. Prinzip des besten linken Präfixes – Wenn mehr...

Detaillierte Beispiele für Linux-Festplattengeräte- und LVM-Verwaltungsbefehle

Vorwort Im Linux-Betriebssystem sind Gerätedateie...

Beispielcode zum Ändern der Farbe eines PNG-Bildes durch einen CSS3-Filter

Diese Methode verwendet den filter in CSS3 drop-s...

Detailliertes Tutorial zur Installation von Python 3.8.1 unter Linux

Dieses Beispiel nimmt die Installation von Python...

Eine kurze Erläuterung des Sperrbereichs der MySQL-Next-Key-Sperre

Vorwort Eines Tages wurde ich plötzlich nach der ...

Javascript-Grundlagen zu integrierten Objekten

Inhaltsverzeichnis 1. Einführung in integrierte O...

So verwenden Sie Web-Frontend-Vektorsymbole

Vorwort Beim Schreiben von Frontend-Seiten verwen...

Vollständiges Beispiel der Kapselung der globalen Toast-Komponente durch Vue

Inhaltsverzeichnis Vorwort 1. Mit vue-cli 1. Defi...

Installations-Tutorial zur komprimierten Version von MySQL 8.0.11 unter Win10

In diesem Artikel finden Sie das Installations-Tu...

So richten Sie eine automatische tägliche Datenbanksicherung in Linux ein

Dieser Artikel verwendet das Centos7.6-System und...

So vereinfachen Sie Redux mit Redux Toolkit

Inhaltsverzeichnis Probleme, die Redux Toolkit lö...

Beispiel zum Aktivieren langsamer Abfragen in MySQL

Vorwort Das langsame Abfrageprotokoll ist eine se...