VorwortAls ich kürzlich die Geschäftsanforderungen für die tägliche Entwicklung geordnet habe, fiel mir zufällig das Parsen und Hochladen von Excel ein, was bei der Entwicklung recht häufig vorkommt. Lassen Sie uns das Wochenende nutzen, um es zu ordnen und zu lernen. Grundlegende EinführungHauptsächlich basierend auf Vue+Element zur Implementierung von Dateianalyse und -export. Das verwendete Plug-In ist xlsx. Die spezifischen Methoden darin können Sie sich ansehen, wenn Sie interessiert sind. Der grundlegende Stil und die Konfiguration werden nicht wiederholt und es ist relativ einfach. Kommen wir direkt zum Grundnahrungsmittel Code-Implementierung GrundstrukturDer Benutzer klickt auf den Datei-Upload und die Excel-Tabelle wird im JSON-Format auf der Seite angezeigt. Der Benutzer führt Vorgänge aus, überprüft die Daten und übermittelt sie an den Dienst. Der Upload-Vorgang verwendet die Upload-Komponente im Element <!-- Schaltfläche „Datei hochladen“ --> <div Klasse="Schaltflächenfeld"> <el-hochladen Aktion akzeptieren=".xlsx, .xls" :auto-upload="false" :Dateiliste anzeigen="false" :bei-Änderung="Griff" > <el-button type="primary" slot="trigger">EXCEL-Datei auswählen</el-button> </el-upload> <el-button type="success" @click="submit" :disabled="disable">Daten sammeln und übermitteln</el-button> </div> <!-- Analysierte Daten--> <div Klasse="tableBox" v-show="anzeigen"> <h3> <i Klasse="el-icon-info"></i> Meine Liebe, im Folgenden sind die Daten aufgeführt, die erfasst wurden. Nachdem Sie überprüft haben, dass sie korrekt sind, klicken Sie bitte auf die Schaltfläche „Gesammelte Daten übermitteln“, um sie auf den Server hochzuladen! </h3> <el-table :data="tempData" style="width: 100%" :height="Höhe" border> <el-table-column prop="name" label="Name" min-width="50%"></el-table-column> <el-table-column prop="phone" label="Telefon" min-width="50%"></el-table-column> </el-Tabelle> </div> Analyse hochladenDer hochgeladene Dateistream kann über die Upload-Komponente abgerufen werden (siehe Abbildung unten). Konvertieren Sie den Dateistream in Binärdateien. Hier können wir die entsprechende Methode in der Utils-Datei hinzufügen (wie folgt) // Lies die Datei im Binärformat export function readFile(file) { gib ein neues Versprechen zurück (Auflösen => { : Der Reader kann nicht mit anderen Dateien verbunden werden. reader.readAsBinaryString(Datei); reader.onload = ev => { lösen(ev.target.result); }; }); } Konvertieren Sie Binärdateien über XLSX in JSON, damit sie angezeigt werden können //Daten in DATEI lesen (in JSON-Format konvertieren) let data = warte auf readFile(Datei); let workbook = xlsx.read(data, { type: "binary" }), Arbeitsblatt = Arbeitsmappe.Arbeitsblätter[Arbeitsmappe.Arbeitsblattnamen[0]]; Daten = xlsx.utils.sheet_to_json(Arbeitsblatt); // Drucken Sie die Ergebnisse aus und fügen Sie die folgende Abbildung hinzu console.log(workbook); Um die gelesenen Daten in Daten umzuwandeln, die an den Server weitergegeben werden können, müssen wir eine Zuordnungstabelle kapseln, die dem an das Backend weitergegebenen Format entspricht (wie unten gezeigt). //Feldkorrespondenztabelle exportieren let character = { Name: { Text: "Name", Typ: "Zeichenfolge" }, Telefon: Text: "Telefon", Typ: "Zeichenfolge" } }; Datenformate konvertieren sei arr = []; Daten.fürJeden(Element => { lass obj = {}; für (let-Eingabezeichen) { wenn (!character.hasOwnProperty(Schlüssel)) brechen; sei v = Zeichen[Schlüssel], text = v.text, Typ = v.Typ; v = Element[Text] || ""; Typ === "Zeichenfolge"? (v = Zeichenfolge(v)): null; Typ === "Zahl"? (v = Zahl(v)): null; obj[Schlüssel] = v; } arr.push(Objekt); }); An Server senden Hier müssen wir prüfen, ob der Server das gemeinsame Senden mehrerer Dateien unterstützt. Wenn dies nicht möglich ist, kann unser Frontend die rekursive Sendemethode verwenden, um sie einzeln zu senden. Sie können unter bestimmten Umständen mit dem Backend kommunizieren. Wir verwenden hier eine rekursive Übertragung. //Daten an den Server senden async submit() { wenn (this.tempData.length <= 0) { diese.$nachricht({ Meldung: "Mein Lieber, bitte wähle zuerst die EXCEL-Datei aus!", Typ: "Warnung", showClose: wahr }); zurückkehren; } dies.deaktivieren = wahr; let loadingInstance = Wird geladen.service({ Text: "Meine Liebe, bitte warte einen Moment. Ich arbeite sehr hart daran, damit fertig zu werden!", Hintergrund: "rgba(0,0,0,.5)" }); // Was ist nach Abschluss zu tun? let complate = () => { diese.$nachricht({ Nachricht: "Mein Lieber, ich habe die Daten für dich hochgeladen!", Typ: „Erfolg“, showClose: wahr }); dies.show = falsch; dies.deaktivieren = falsch; wird geladenInstance.schließen(); }; // Die Daten müssen einzeln an den Server übergeben werden. let n = 0; lass send = async () => { wenn (n > this.tempData.length - 1) { // Alle bestanden complate(); zurückkehren; } lass body = this.tempData[n]; // Durch die Schnittstelle gehen let result = await createAPI(body); wenn (parseInt(Ergebniscode) === 0) { // Erfolg n++; } schicken(); }; schicken(); } Oben finden Sie eine Zusammenfassung der Analyse und des Hochladens von Excel-Dateien. Tatsächlich ist es nicht sehr schwierig. Dies sind die Unternehmen, die häufig an der täglichen Entwicklung beteiligt sind. Als Nächstes werfen wir einen Blick auf den Excel-Export. Excel-Export GrundstrukturSobald Sie die Seite aufrufen, holen Sie sich die gerade hochgeladene Datei, zeigen Sie sie in einer Tabelle an und erstellen Sie dann eine Seite ... Ich werde nicht darüber sprechen. Beginnen wir direkt mit dem Klicken auf die Schaltfläche „Excel exportieren“ und schauen uns zuerst die Seitenstruktur an <div Klasse="Container"> <!-- Schaltfläche "Hochladen" --> <div Klasse="Schaltflächenfeld"> <router-link zu="/upload"> <el-tooltip content="EXCEL-Datensammlung" placement="top"> <el-button type="primary" icon="el-icon-edit" kreis></el-button> </el-tooltip> </Router-Link> </div> <!-- Suchbereich --> <div Klasse="Suchfeld"> <el-input v-model="search" placeholder="Fuzzy-Suche basierend auf Name und Mobiltelefon" @change="searchHandle"></el-input> <el-button type="success" @click="submit" :disabled="disabled">Ausgewählte Daten exportieren</el-button> </div> <!-- Listenbereich --> <div Klasse="tableBox"> <el-Tabelle :data="Tabellendaten" :Höhe="Höhe" Stil="Breite: 100%" v-loading="wird geladen" element-loading-text="Meine Dame, ich arbeite hart am Laden …" @selection-change="AuswahlÄnderung" > <el-table-column Typ="Auswahl" Breite="50" Ausrichtung="Mitte"></el-table-column> <el-table-column prop="id" label="Nummer" min-width="10%"></el-table-column> <el-table-column prop="name" label="Name" min-width="20%"></el-table-column> <el-table-column prop="phone" label="Telefon" min-width="20%"></el-table-column> <el-table-column prop="time" label="Erstellungszeit" min-width="25%" :formatter="formatter"></el-table-column> </el-Tabelle> </div> <!-- Seitenbereich --> <div Klasse="SeitenBox"> <el-pagination Hintergrund Auf einer einzelnen Seite ausblenden Layout = "Gesamt, Größen, Zurück, Pager, Weiter" :page-size="Seitengröße" :current-page="Seite" :gesamt="gesamt" @size-change="Größenänderung" @current-change="vorherigesNächstes" @prev-click="vorherigesNächstes" @next-click="vorherigesNächstes" ></el-pagination> </div> </div> Nach Excel exportierenKonvertieren Sie JSON-Daten in Blattdaten, erstellen Sie eine neue Tabelle, fügen Sie ein Blatt in die Tabelle ein und schreiben Sie die Datei mit der writeFile-Methode von xlsx in die Tabelle // Daten exportieren submit() { wenn (diese.Auswahlliste.Länge <= 0) { diese.$nachricht({ Nachricht: "Mein Lieber, bitte wähle zuerst die Daten aus, die du exportieren möchtest!", Typ: "Warnung", showClose: wahr }); zurückkehren; } dies.deaktiviert = wahr; let loadingInstance = Wird geladen.service({ Text: „Meine Liebe, bitte warte einen Moment. Ich arbeite sehr hart daran, damit fertig zu werden …“, Hintergrund: "rgba(0,0,0,.5)" }); lass arr = diese.Auswahlliste.map(item => { zurückkehren { Kennzeichnung: item.id, Name: Artikelname, Telefon: item.phone }; }); // JSON-Daten in Tabellendaten konvertieren let sheet = xslx.utils.json_to_sheet(arr), // Neue Tabelle erstellen book = xslx.utils.book_new(); //Fügt ein Blatt in die Tabelle ein xslx.utils.book_append_sheet(Buch, Blatt, "Blatt1"); // Schreiben Sie die Datei mit der Methode writeFile von xlsx xslx.writeFile(book, `user${new Date().getTime()}.xls`); wird geladenInstance.schließen(); dies.deaktiviert = falsch; } **Die oben genannten Vorgänge sind mit Excel verknüpft. Datei-Upload und -Analyse sind eine häufige Anforderung. Wenn Sie sich für das Hochladen großer Dateien und das Fortsetzen nach dem Ausschalten interessieren, können Sie meinen Artikel „Hochladen großer Dateien und Fortsetzen nach Haltepunkt“ lesen. ZusammenfassenDies ist das Ende dieses Artikels über die Implementierung von Excel-Analyse- und Exportfunktionen basierend auf Vue. Weitere relevante Inhalte zur Analyse und zum Export von Vue-Excel 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:
|
<<: Probleme bei der Verwendung mehrerer einfacher und dreifacher Anführungszeichen in MySQL concat
>>: So installieren und konfigurieren Sie das Orchestrierungstool Docker Compose in Docker.v19
SQL UNIQUE-Einschränkung Die UNIQUE-Einschränkung...
1. Statistiken zu PV und IP Zählen Sie die PV (Pa...
Standardmäßig werden Breite und Höhe der Tabelle ...
Schauen Sie sich zuerst die Lösung an #----------...
1. Zweck: Machen Sie den Code leichter wartbar un...
In diesem Artikel wird der spezifische Code von j...
Werfen wir einen Blick auf das dynamische Spleiße...
Vorne geschrieben In der Vergangenheit und in akt...
Verwenden Sie immer noch das flexible Rem-Layout?...
1. Vergleichen Sie den alten virtuellen DOM mit d...
Wenn an Ihren Server eine Anforderung zum Anzeige...
Importieren Sie die aus der Oracle-Datenbank expo...
Mit der Popularität und Reife von Docker ist es a...
Inhaltsverzeichnis Vorwort Einen Stapel und zwei ...
In diesem Artikel wird der spezifische Code von V...