1. Technologieauswahl1. 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 UmsetzungImplementiert mit dem Plugin „vue-json-excel“ 1. Installieren Sie die Abhängigkeit vue-json-excelnpm install -S vue-json-excel 2. Registrieren Sie das Plugin bei der Vue-Instanzimportiere Vue von „vue“; importiere JsonExcel aus „vue-json-excel“; Vue.component("downloadExcel", JsonExcel); 3. NutzungIm 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:
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)
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 installierennpm 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. NutzungHier ist die Methode zum Exportieren von Excel-Dateien. Es gibt zwei Lösungen zum Implementieren der Dateidownloadfunktion:
Das Plugin js-xlsx verfügt über entsprechende Funktionen, um die Konvertierung verschiedener Datenformate zu erleichtern:
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:
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
ZusammenfassenDies 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:
|
<<: Zusammenfassung einiger Gedanken zur Binlog-Optimierung in MySQL
>>: Detailliertes Tutorial zur Docker-Compose-Bereitstellung und Konfiguration von Jenkins
1. Was ist ElasticSearch? Elasticsearch wird eben...
Inhaltsverzeichnis 1. Umweltvorbereitung 2. Daten...
1. Prinzip des besten linken Präfixes – Wenn mehr...
Vorwort Im Linux-Betriebssystem sind Gerätedateie...
Diese Methode verwendet den filter in CSS3 drop-s...
MySQL 8.0.22 Download-, Installations- und Konfig...
Dieses Beispiel nimmt die Installation von Python...
Vorwort Eines Tages wurde ich plötzlich nach der ...
Inhaltsverzeichnis 1. Einführung in integrierte O...
Vorwort Beim Schreiben von Frontend-Seiten verwen...
Inhaltsverzeichnis Vorwort 1. Mit vue-cli 1. Defi...
In diesem Artikel finden Sie das Installations-Tu...
Dieser Artikel verwendet das Centos7.6-System und...
Inhaltsverzeichnis Probleme, die Redux Toolkit lö...
Vorwort Das langsame Abfrageprotokoll ist eine se...