Vue エクスポート Excel 機能の全プロセス記録

Vue エクスポート Excel 機能の全プロセス記録

1. フロントエンドのリーディングプロセス:

1. ページ上のエクスポートボタンをクリックする(クリックイベントを登録する)

2. イベントコールバックでバックグラウンドデータのリクエストを送信する

3. 背景データを処理し、目的の効果を実現する

4. Excelファイルを生成する

2. プラグインの使用と初期化

2.1 vue-admin で提供されているメソッドを利用します。

プラグイン パッケージをコピーして、プロジェクトの src フォルダーに貼り付けます。

2.2 プラグインの依存関係をインストールします。

注意:エラーが報告される可能性が高くなります。この段階でのエラーは基本的に依存関係がインストールされていないことが原因です。すべてインストールしてください。

npm インストール ファイルセーバー スクリプトローダー --save

2.3 コールバック関数の内容は以下のとおりです

「エクスポート」ボタンを正式にクリックすると、ベンダー フォルダーに Export2Excel モジュールがロードされます。

正式に「エクスポート」ボタンをクリックすると、ベンダーフォルダのExport2Excelモジュールが読み込まれます。import('@/vendor/Export2Excel').then(excel => {
  // Excel はインポートされたモジュール オブジェクトを表します // import メソッドは実行後に promise オブジェクトを返します。
                                 // then メソッドでは、使用されるモジュール オブジェクトを取得できます console.log(excel)
  excel.export_json_to_excel({
    ヘッダー: ['name', 'salary'], // ヘッダーに必要なデータ: [
      ['Liu Bei', 100], //データの構成部分に注目すると、厳密な2次元配列が必要であることがわかります ['Guan Yu', 500]
    ], // 必要な特定のデータ filename: 'excel-list', // ファイル名 autoWidth: true, // 幅が適応的かどうか bookType: 'xlsx' // 生成されるファイルの種類 })
})

Excel エクスポート パラメータの説明

注: ここまでは、自分で書いた偽データを使用して、簡単なエクスポートエフェクトが完成しました。実際のプロジェクトでは、バックグラウンドから返されたデータを使用し、目的の効果が得られるようにフォーマットを変更する必要があります (テスト済みであり、上記の手順に従って完了できます)。効果は次のとおりです。

3. 背景データを処理し、目的の効果を実現する

たとえば、バックグラウンドによって返されるテーブル ヘッダーは英語であり、中国語に変換する必要がありますが、その形式はプラグインで必要な形式ではありません。

バックエンドの戻りデータ:

キーを中国語に変換し、値を配列にキャプチャする必要があります。

3.1 データ処理関数を準備する(最後のコールバックで使用されます)

3.2 最初にテーブルヘッダーを処理し、後で英語のヘッダーを中国語に変換するオブジェクトを定義します。

定数マップ = {
        'id': '番号',
        'パスワード': 'パスワード',
        'mobile': '携帯電話番号',
        'ユーザー名': '名前',
        'timeOfEntry': '求人エントリー日',
        'formOfEmployment': '雇用形態',
        'correctionTime': '訂正日',
        'workNumber': '作業番号',
        'departmentName': '部門',
        'staffPhoto': 'アバターアドレス'
      }

3.3 ヘッダーを定義する

header = [英語のヘッダーは後で配列の形式で中国語に変換されます]

効果は次のコードに示されています。

ヘッダー = ['id', 'mobile', 'username',……]

3.4 バックグラウンドリターンデータを処理する

背景は配列を返し、そのうちの 1 つを最初のデータとして定義します。目的は、最初のデータをサンプルとしてヘッダーを設定することです。最初のデータが false の場合、背景は何も返さず、再生全体が終了していることを意味します。

効果は次のコードに示されています。

定数 1 = リスト[0]
      もし(!1) {
        { ヘッダー、データ } を返す
      }

3.5 ヘッダー処理ロジック

01 `Object.keys(one) ` これはオブジェクトを走査し、キーを抽出して配列を形成します。

02 `map`メソッドは各項目を走査し、配列を返します

03 `return map[key]` は map.id = 'number' と見ることができます (理解しやすい)。map メソッドは map オブジェクトに対して処理を続け、map[key] は実際には 'number'、'department' などの値であり、次のような配列を形成します: ['name'、'salary']

ヘッダー = Object.keys(one).map(キー => {
        マップ[キー]を返す
      })

3.6 テーブルデータ処理ロジック

目的: 背景は、1 と 2 で表される正式な従業員と非公式な従業員を返します。数字をテキストに変換し、配列形式にする必要があります。

01-まず、バックエンドから返されるObj['formOfEmployment']は1、2の数字です。これらを---> 'formal'、'informal'にしたいのです。

02-obj['formOfEmployment'] = hireTypEnmu[key] このコードは、置換を実現するために、中国語の文字を左側の数字に設定することを意味します。左と右がそれぞれ何を表しているか見てみましょう。

03- obj['formOfEmployment']は現時点では数値です

04-hireTypEnmu:{1:'formal', '2':'informal'}これは私たちが独自に定義したオブジェクトです

05-hireTypEnmu[key] --keyは数字なので、その値は漢字になります

効果は次のコードに示されています。

// データはリスト内の各オブジェクトを対応する値の配列に変換します // hireTypEnmu:{1:'formal', '2':'informal' }
      データ = list.map(obj => {
        // Obj['formOfEmployment']: 1, 2 ---> 'formal'、'informal'
        const key = obj['formOfEmployment'] // 1, 2
        obj['formOfEmployment'] = hireTypEnmu[キー]
 
        Object.values(obj) を返します。
      })

3.7 関数の戻り値

処理されたデータを返す

{ ヘッダー、データ } を返す

3.8 最終完了

このとき、この関数をコールバック関数に取り込むと、ヘッダーとデータ データがすでに存在します。

完成したコードは次のとおりです。

hエクスポート() {
      import('@/vendor/Export2Excel').then(非同期Excel => {
        // データを取得するために Ajax リクエストを送信します const res = await getEmployee(this.page, this.size)
        定数リスト = res.data.rows
        console.log('バックエンドから取得したデータ', リスト)
 
        const { ヘッダー、データ } = this.formatData(リスト)
        // Excel はインポートされたモジュール オブジェクトを表します console.log(header, data)
        excel.export_json_to_excel({
          // ヘッダー: ['name', 'salary'], // ヘッダーは必須 ヘッダー: header, // ヘッダーは必須 データ: data,
          filename: 'excel-list', // ファイル名 autoWidth: true, // 幅が適応的かどうか bookType: 'xlsx' // 生成されたファイルの種類 })
      })
    },

要約:

上記のコードはテスト済みであり、効果を実現するために直接使用できます。

付録: vue-element-admin はコード クラウドから取得されました。このバージョンには、二次的な開発機能がさらに追加されています。

# git clone https://github.com/panjiachen/vue-element-admin.git # github からコードをプルします$ git clone https://gitee.com/mirrors/vue-element-admin.git # コードクラウドからプルします$ cd vue-element-admin # 特定のディレクトリに切り替えます$ npm install # すべての依存関係をインストールします$ npm run dev # 開発およびデバッグモードを開始します。起動コマンドを確認するには、package.json ファイル内のスクリプトを確認してください。

Vue の Excel エクスポート機能に関するこの記事はこれで終わりです。Vue の Excel エクスポート機能に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • VueはExcelテーブルをエクスポートする機能を実装します
  • VueプロジェクトでExcelをエクスポートする方法の詳細な説明
  • Vue で Excel テーブルをエクスポートするための実装コード
  • Vue フロントエンドの Excel ファイルのエクスポートの詳細な実装計画
  • vue.js で Excel テーブルをエクスポートするケース分析
  • Vue を使用して Excel をエクスポートする際の落とし穴と解決策
  • Vue を Excel にエクスポートする初心者向けの詳細なチュートリアル

<<:  MySQLのロックについて理解しておくべきこと

>>:  awk でのループの使用

推薦する

Web フォームの入力要素の高度な使用例 11 選

1. ボタンが押されたときに点線のボックスをキャンセルする<br />入力に属性値hid...

MySQL 8.0 における非同期レプリケーションの 3 つの方法について簡単に説明します。

この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...

MySQL 8.0.26 のインストールと簡易チュートリアル (インターネット上で最も完全)

目次1. MySQLをダウンロードする1.1 ダウンロード1.2 インストール1. MySQLをダウ...

nginx を使用した負荷分散モジュールの解釈

目次負荷分散に nginx を使用するための 2 つのモジュール:アップストリームはロードノードプー...

border-radiusは要素に丸い境界線を追加する方法です

border-radius:10px; /* すべての角は半径 10px で丸められます*/ bor...

MySQL の組み込み関数 find_in_set を使用した効率的なあいまい検索の詳細な説明

一般的に使用される方法は次の 4 つです。 1.locate()メソッドを使用する一般的な使用法: ...

Vue 値転送の 12 の方法の概要

目次1. 父から息子へ2. 息子から父へ3. ブラザーコンポーネント通信(バス) 4. ref/re...

シェルスクリプトを使用したMySQLデータベースの自動バックアップ

シェルスクリプトを使用したMySQLデータベースの自動バックアップデータベースを頻繁にバックアップす...

MySQL InnoDB アーキテクチャの概要

目次導入1. MySQLデータベースの全体的なアーキテクチャSQL インターフェースパーサーオプティ...

Windows 7 で Python 3.4 を使って MySQL データベースを使用する

Python 3.4でMySQLデータベースを使用する詳細なプロセスは次のとおりです。 Window...

nginx を使用して正規表現で指定された URL リクエストを傍受する方法

nginx サーバーnginx は、静的ファイルの処理に非常に効率的な優れた Web サーバーです。...

ボタンの 4 つのクリック応答方法の概要

ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...

MAC+PyCharm+Flask+Vue.js ビルドシステム

目次node.js+nvm+npm を設定するnpmスイッチタオバオミラーVue.jsをインストール...

大規模なMySQLデータベース用のマスタースレーブシステムを構築するアイデアを共有する

今週は戦争のように忙しかったです。他人に操られているような気がします。毎日朝早く出勤して夜遅く帰り、...