ReactはExcelファイルのインポートとエクスポートを実装します

ReactはExcelファイルのインポートとエクスポートを実装します

プレゼンテーション層

ここではantdのUploadアップロードコンポーネントを使用しています

antdコードの一部を引用

'antd' から { Button,Table,Upload } をインポートします。

<アップロード {...props} fileList={state.fileList}>
    <Button type="primary" >Excel インポート</Button>
</アップロード>

<Button type="primary" onClick={handleExport}>Excel エクスポート</Button>

ビジネスレイヤー

まず、作品を分析してみましょう。

  • Excel のインポート作業: ユーザーは Excel テーブルをアップロードし、テーブルの内容をバックエンド処理用の JSON オブジェクトに変換し、バックエンドはデータをデータベースに保存します。
  • Excel 作業のエクスポート: バックエンドの json 形式のデータを取得し、フロントエンドでデータをシート ワークブック オブジェクトに変換し、生成されたオブジェクトをダウンロードおよびエクスポート用に Excel テーブルに変換します。

技術的な詳細は次のとおりです

コアプラグイン xlsx

xlsx をインストール: npm install xlsx --save-dev

主に使用されるコア API を紹介します。

  • XLSX.read(data,type) // Excelデータを解析する
  • workbook.Sheets[workbook.SheetNames[0]] // ワークブック オブジェクトの最初のシートを取得します。ユーザーは 1 つのシートのみを持っている必要があります。ワークブックがわからない場合は、以下の説明を参照してください。
  • XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {header:1,defval:''})// ワークブックオブジェクトをJSONオブジェクト配列に変換します。defvalが''に設定されていない場合、デフォルト値は空になることに注意してください。
  • XLSX.utils.json_to_sheet(json) // json オブジェクトをワークブック オブジェクトに変換します
// ワークブックの理解:
{
    シート名: ['sheet1', 'sheet2'],
    シート:
        // ワークシート
        'シート1': {
            // セル
            'A1': { ... },
            // セル
            'A2': { ... },
            ...
        },
        // ワークシート
        'シート2': {
            // セル
            'A1': { ... },
            // セル
            'A2': { ... },
            ...
        }
    }
}

Excelインポート

コアコード:

const f = ファイル;
const リーダー = 新しい FileReader();
reader.onload = 関数 (e) {
    試す{
        const データ = e.target.result;
        const workbook = XLSX.read(datas, {type: "binary",}); //データを解析する
        const first_worksheet = workbook.Sheets[workbook.SheetNames[0]]; //ワークブックの最初のシートです
        const jsonArr = XLSX.utils.sheet_to_json(first_worksheet, {header: 1,defval:''}); // ワークブック オブジェクトを JSON オブジェクト配列に変換します handleImpotedJson(jsonArr) // 配列の処理 message.success('Excel アップロードの解析に成功しました!')
    }キャッチ(e){
      message.error('ファイルタイプが正しくありません! またはファイル解析エラーです')
    } 
};
リーダー.readAsBinaryString(f);

理解する:

  • FileReaderオブジェクトはファイルオブジェクトをインスタンス化し、onloadイベントで処理します。
  • XLSX.readはデータを解析します
  • XLSX.utils.sheet_to_json(first_worksheet, {header: 1,defval:''}) 解析されたワークブックオブジェクトをJSONオブジェクトに変換します

Excelエクスポート

コアコード:

constダウンロードExcel = () => {
    const json = handleExportedJson(データ)
    定数 sheet = XLSX.utils.json_to_sheet(json);
    openDownloadDialog(sheet2blob(sheet,"Sheet1"), "ファイル.xls をダウンロード")
}
const handleExportedJson = (array) =>{...} // Json データを処理 const openDownloadDialog = (url, saveName) =>{...} // ダウンロードを開く const sheet2blob = (sheet, sheetName) =>{...} // BLOB 型に変換する

理解する:

  • 処理されたJSON形式のデータを取得する
  • XLSX.utils.json_to_sheet(json) シートワークブックオブジェクトに変換
  • sheet2blob(sheet,saveName) ワークブックオブジェクトをblobに変換します
  • openDownloadDialogはBLOBアドレスを作成し、<a>タグを通じてダウンロードアクションを実装します。

Excel エクスポート プラグイン (js-export-excel)

なぜ今まで自分で実装したコードを投稿しなかったのか?それは便利なプラグインを見つけたからです。コードは非常にシンプルです。

コアコード:

// ファイルを直接エクスポート let dataTable = []; // Excel ファイルのデータ内容 let option = {}; // オプションは Excel ファイルを表します dataTable = data; // データ ソース option.fileName = "ファイルをダウンロード"; // Excel ファイル名 console.log("data===",dataTable)
オプション.データ = [
    {
        sheetData: dataTable, //Excel ファイルのデータ ソースsheetName: 'Sheet1', //Excel ファイル内のシート ページ名sheetFilter: ['id', 'name', 'belong', 'step','tag'], //Excel ファイルに表示される列データsheetHeader: ['project id', 'project name', 'company', 'project stage','project tag'], //Excel ファイル内の各列のヘッダー名}
]
let toExcel = new ExportJsonExcel(option); //Excelファイルを生成 toExcel.saveExcel(); //Excelファイルをダウンロード

上記はこのプラグインの基本的な使い方です。Blob のエクスポートや圧縮もサポートしています。詳細については、公式 Web サイトでコア オプションの説明を参照してください。

  • fileName ダウンロードファイル名(デフォルト: download)
  • データ
/*複数のシート*/
/*各シートはオブジェクトです */
[{
    sheetData:[], // datasheetName:'', // (オプション) シート名、デフォルトは sheet1
    sheetFilter:[], // (オプション) 列フィルター (データがオブジェクトの場合にのみ機能します)
    sheetHeader:[] // 最初の行、タイトル columnWidths: [] // (オプション) 列の幅、列の順序に対応している必要があります}]

ブラウザのサポート: IE 10 以上 デモが Chrome、Safari、IE で動作することをテストしました。

成果を達成する

それでも理解できない場合は、GitHubのデモソースコードをご覧ください。

結論

これで、React の Excel ファイルのインポートとエクスポートに関するこの記事は終了です。React の Excel のインポートとエクスポートに関する関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • React でカレンダー コンポーネントを構築するためのステップ バイ ステップ ガイド
  • React における ref の一般的な使用法の概要
  • Vue3.0 における Ref と Reactive の違いの詳細な分析
  • Visual Studio Code + Reactをベースに開発環境を構築するプロセス
  • vscodeを使用してReact Native開発環境を構築する方法を教えます
  • HTMLからReactを実装する方法を教えます
  • React 並行関数エクスペリエンス (フロントエンド並行モード)
  • React+TypeScriptプロジェクト構築事例解説

<<:  MySql8.0以降のバージョンでROOTパスワードを正しく変更する方法

>>:  Mysql WorkBench のインストールと設定のグラフィックチュートリアル

推薦する

クラウドデータ移行サービスの観点から見たMySQLの大規模テーブル抽出モードの原理分析

概要: MySQL JDBC 抽出にはどのような方法を使用すればよいでしょうか? その方法を説明しま...

IE8でラベルの背景画像が表示されない問題の解決方法

今日、ちょっとした問題に遭遇し、長い間苦労しました。そのことを皆さんにシェアしたいと思います。 a ...

Vue+Websocketはチャット機能を実装するだけです

この記事では、チャット機能を簡単に実装するためのVue+Websocketの具体的なコードを参考まで...

MySQL 8で追加された3つの新しいインデックスは、非表示、降順、関数です。

目次MySQL 8 の隠しインデックス、降順インデックス、関数インデックス1. 隠しインデックス1....

vue ルーティング ビュー router-view のネストされたジャンプの実装

目次1. app.vueページを修正する2. ログインページを作成する (/views/login/...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

美容・スタイリングウェブサイト向けのカラーマッチングテクニックと効果表示

色はあらゆるウェブサイトにとって最も重要な要素の 1 つであり、閲覧者に大きな影響を与えるため、色の...

Vueデータプロキシの詳細な説明

目次1. これからお話しするのは、フロントエンド担当者がvue-cliで完了できるソリューション、デ...

Expressプロジェクトファイルディレクトリの説明と詳細な機能の説明

app.js: スタートアップファイル、またはエントリファイルpackage.json: プロジェク...

MySQL 8.0.15 バージョンのインストールチュートリアル Navicat.list への接続

落とし穴1. ネット上の多くのチュートリアルでは環境変数を設定するファイル名はmy.iniと書いてあ...

Ubuntu 18.04 Server バージョンのインストールと使用方法 (画像とテキスト)

1 システムのインストール手順OSバージョン:1804イメージのダウンロード: http://cd...

ウェブフロントエンドコードを書く際の考慮事項のまとめ

1. HTMLタグの前に次のような文を追加するのが最適です。 <!DOCTYPE HTML P...

MySQL は低速クエリを可能にします (EXPLAIN SQL ステートメントの使用の概要)

今日、データベース操作はますますアプリケーション全体のパフォーマンスのボトルネックになりつつあり、こ...

Node.js における path.join() の利点の分析

文字列連結ではなく path.join() メソッドを使用する必要があるのはなぜか疑問に思うかもしれ...

WeChatアプレットが複数行テキストのスクロール効果を実現

この記事の例では、WeChatアプレットで複数行のテキストスクロールを実装するための具体的なコードを...