Vue で Excel インポート機能を実装する詳細な手順

Vue で Excel インポート機能を実装する詳細な手順

1. フロントエンド主導の実装手順

最初のステップは、ページのインポートボタンをクリックしてExcelファイルを読み込むことです。

プラグインを使用して完了しました。

2番目のステップは、バックエンドの要件に応じてデータ形式を処理し、必要な形式に変換することです。

ロジックは自分で記述する必要があります。

3番目のステップは、バックエンドインターフェースを介してAjax経由でデータを送り返すことです。

インターフェースを調整し、通常の操作を実行します。

簡単に言うと、フロントエンドはExcelファイルを読み取り、ファイル形式を変更し、インターフェースを呼び出します。

2. Excelファイルを読む

注: この手順により、フロントエンドのインポート機能を実現できます。フォーマットを変更する場合は、手順 3 に進みます。

概要: コードを自分のフォルダーにコピーし、必要なプラグインをダウンロードします。

2.1 elementUIが提供するvue-admin-elementのアップロード方法を使用する(Baiduウェアハウスのクローン方法、公式サイトにも掲載されている)

2.2 パッケージをダウンロードする npm install xlsx -S (デフォルトでは、手順 2.1 が完了しています)

2.3 UploadExcel コンポーネントを導入し、グローバルとして登録します ( UploadExcel這個文件,復制一下,封裝組件不必多說)

グローバルコンポーネントの登録方法が分からない場合は、次のコードを参照してください。(main.js で行うこともできますが、保守性を高めるためにここで行います)

'./PageTools' から PageTools をインポートします
'./UploadExcel' から UploadExcel をインポートします。
 
エクスポートデフォルト{
  // プラグインの初期化。プラグインが提供するグローバル関数はここで設定できます。install(Vue) {
    // コンポーネントのグローバル登録 Vue.component('PageTools', PageTools) // ツールバー コンポーネントを登録 Vue.component('UploadExcel', UploadExcel) // インポートされた Excel コンポーネントを登録 }
} 

  2.4 コンポーネントを導入し、コンポーネントを使用し、ルートを構成し、クリックコールバック関数を設定する(これ以上の説明は不要)

2.5 テスト結果

ブラウザに設定したルーティングアドレスを手動で入力すると、ページがそのアドレスにジャンプします。


要約: 1. 最も重要なことは、必要なプラグインをコピーしてダウンロードすることです

2. UploadExcelコンポーネント(Excelファイルをインポートするため)を導入する必要がありますが、気分に応じてグローバルに登録する必要はありません。

3. コンポーネントをインポートし、コールバック関数を登録します。この関数内の 2 つのパラメータは必須です。理解を容易にするために、ソース コードを参照してください。

4. Excelインポートプラグインの本質:Excelを分析後にJSで認識できる通常のデータに変換し、データに対して任意の操作を実行できるようにします。

3. データを処理する

注: このステップでは、実際に JavaScript を使用する能力をテストします。残念ながら、これは私にとっては難しくなく、今後も長い間難しいことはないと思います。

3.1 バックエンドに必要なフォーマット:

3.2 処理対象:

  • 中国語のフィールドを英語に変換します。姓名はExcelに読み込まれますが、バックエンドではusernameが必要です
  • 日付処理。 Excel から読み取られる時間は数値ですが、バックエンドでは標準の日付が必要です。

3.3 処理関数を個別にカプセル化する:

/**
     * 結果 Excel テーブルの内容 // [ {'名前': 'Xiao Zhang', '携帯電話番号': '13712345678'}, {.....} ]
      // ターゲット // [ {'username': 'Xiao Zhang', 'mobile': '13712345678'}, {.....} ]
     */
    transExcel(結果) {
      定数ユーザーリレーション = {
        「求人エントリー日」: 「timeOfEntry」、
        「携帯電話番号」: 「携帯電話」,
        '名前': 'ユーザー名',
        「訂正日」: 「訂正時刻」,
        '作業番号': 'workNumber',
        '部門': '部門名',
        「雇用形態」: 「formOfEmployment」
      }
      結果を返します。map(item => {
        定数オブジェクト = {}
        // 1. このオブジェクトのすべての属性名を取得します: ['name', 'phone number']
        // 2. この配列を走査し、中国語名を通じて userRelations 内の対応する英語名を見つけ、値を保存します。const zhKeys = Object.keys(item)
        zhKeys.forEach(zhKey => {
          定数 enKey = ユーザーリレーション[zhKey]
          // 時間形式の場合は変換します if (enKey === 'correctionTime' || enKey === 'timeOfEntry') {
            obj[enKey] = 新しい日付(formatExcelDate(item[zhKey]))
          } それ以外 {
            obj[enKey] = アイテム[zhKey]
          }
        })
 
        オブジェクトを返す
      })
    }
 
handleSuccess({ 結果、ヘッダー }) {
    
  console.log('現在の Excel ファイルから読み取られた内容は', results)
  // 結果: [{参加日: 44502、名前: xxxx}]
  // ターゲット:
  // 結果: [{timeOfEntry: 44502, ユーザー名: xxxx}]
  // Excel から読み取ったフォーマットを処理する const arr = this.transExcel(results)
  console.log('変換後のフォーマットは', arr)
})

3.4 日付処理関数:

// Excel ファイルの日付形式を標準時間に戻す // https://blog.csdn.net/qq_15054679/article/details/107712966
エクスポート関数formatExcelDate(numb, format = '/') {
  const time = new Date((数値 - 25567) * 24 * 3600000 - 5 * 60 * 1000 - 43 * 1000 - 24 * 3600000 - 8 * 3600000)
  時間.setYear(時間.getFullYear())
  定数年 = time.getFullYear() + ''
  定数月 = time.getMonth() + 1 + ''
  定数日付 = time.getDate() + ''
  if (format && format.length === 1) {
    年 + 形式 + 月 + 形式 + 日付を返す
  }
  年 + (月 < 10 ? '0' + 月 : 月) + (日 < 10 ? '0' + 日付 : 日) を返します
}

4. インターフェースを呼び出してリクエストを送信し、ページ内で使用する

'@/api/employees' から { importEmployee } をインポートします。
エクスポートデフォルト{
  名前: 'インポート'、
  メソッド: {
    非同期handleSuccess({ 結果、ヘッダー }) {
      試す {
        console.log('現在の Excel ファイルから読み取られた内容は', results)
        // 結果: [{参加日: 44502、名前: xxxx}]
        // ターゲット:
        // 結果: [{timeOfEntry: 44502, ユーザー名: xxxx}]
        const arr = this.transExcel(結果)
        console.log('変換後のフォーマットは', arr)
        //アップロードインターフェースを呼び出し、
        const rs = importEmployee(arr) を待機します
        console.log('アップロードインターフェースを呼び出す', rs)
        // アップロードが成功したら、前のページに戻ります this.$router.back()
        this.$message.success('操作は成功しました')
      } キャッチ (エラー) {
        this.$message.error(err.message)
      }
    }
}

5 要約:

インポート機能はエクスポート機能と似ています。難しいのはデータ形式の変換です。この記事では詳しく紹介していませんが、別のエクスポート記事で詳しく説明しています。興味があれば、ぜひご覧ください。エクスポート機能の実装へジャンプするには、ここをクリックしてください。

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

以下もご興味があるかもしれません:
  • Vue エクスポート Excel 機能の全プロセス記録
  • VueにExcelテーブルプラグインを導入する方法
  • Vue で Web ページ データを Excel にエクスポートする方法
  • VueはExcelテーブルをインポートし、インポートに失敗したデータを自動的にダウンロードします。

<<:  VMware12 インストール centOS8 構成グラフィック チュートリアルの詳細説明 (vm 仮想マシン インストール centos8 チュートリアル)

>>:  VMware に Centos8 をインストールする詳細なチュートリアル

推薦する

Vueデータ割り当て問題の解決

私が長い間遭遇してきた問題を要約してみましょう。プロジェクトでは、フロントエンドをレンダリングするた...

mysqlは2つ以上のフィールドがNULLであるレコードを見つける問題を解決します

コアコード /*-------------------------------- 2つ以上のフィール...

MySQL 重複インデックスと冗長インデックスの例の分析

この記事では、例を使用して MySQL の重複インデックスと冗長インデックスについて説明します。ご参...

LinuxベースのLVMシームレスディスク水平拡張の詳細な説明

環境名前財産CPU 5650 円メモリ4Gディスク20G+4TB この時点で、サーバーにはすでに次の...

JavaScript マクロタスクとマイクロタスクの実行順序についての簡単な説明

目次1. JavaScriptはシングルスレッドです1. 同期タスク2. 非同期タスク2. タスクキ...

Windows 10 に Apache 2.4.41 をインストールするチュートリアル

1. Apache 2.4.41 のインストールと設定最初のステップは、以下に示すように、https...

フォント名に従ってフォントを呼び出すと、ブラウザに必要なフォントが表示されます。

質問 1: ブラウザに必要なフォントを表示するように指示するにはどうすればよいでしょうか? フォント...

MySQLトランザクション処理の使用方法とサンプルコードの詳細な説明

MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...

docker+jenkins+node.js の自動デプロイメント環境をゼロから構築する方法

このケースはCentOS 7システムに基づいていますDockerの使用経験がある人に適していますLi...

MySQL 自動インクリメント ID のオーバーサイズ問題のトラブルシューティングと解決策

導入Xiao A がコードを書いていたところ、DBA Xiao B が突然、「急いでユーザー固有情報...

Nginx で Basic Auth ログイン認証を設定する方法

nginx でファイルサーバーを構築することもありますが、これは一般に公開されていますが、サーバーが...

vite2.0+vue3 モバイルプロジェクトの詳細な説明

1. 関連する技術的なポイントバイト版ヴュー3 ts統合ルーティングvuexを統合するAxiosを統...

ドラッグアンドドロップでVueユーザーインターフェースを生成する方法

目次序文1. 技術原理1.1 レイアウト1.2 コンポーネント1.3 ステータス1.4 イベント1....

JSはオンラインでのアナウンスのスクロール効果を実現します

この記事では、オンラインアナウンスのスクロール効果を実現するためのJSの具体的なコードを参考までに共...

favico.ico---ウェブサイトicoアイコン設定手順

1. 正常に生成されたアイコン ファイルをダウンロードし、名前を favico.ico に変更して、...