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 挿入時間の 8 時間の違いの問題の解決方法

MySQL挿入時の8時間の時差の問題を解決する通常、jdbc の URL にはいくつかのパラメータを...

MySQL ビュー管理ビューの例の詳細説明 [追加、削除、変更、クエリ操作]

この記事では、例を使用して MySQL ビューの管理ビュー操作について説明します。ご参考までに、詳細...

Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

最近、Docker を使用して Java アプリケーションをデプロイしていたときに、タイムゾーンが間...

Vueは双方向データバインディングを実装します

この記事の例では、双方向データバインディングを実装するためのVueの具体的なコードを参考までに共有し...

Centos7 で NIS を構成する詳細な手順

目次原理ネットワーク環境の準備インストール前の準備NIS サーバー操作NIS クライアント操作原理N...

Vue2.x および Vue3.x のカスタム命令の使用方法とフック関数の原理を理解する

目次Vue2.x の使用法グローバル登録部分登録使用フック機能フック関数のパラメータVue3.x の...

MySQL 5.6 マスタースレーブエラー報告の実践記録

1. 問題の症状バージョン: MySQL 5.6、従来の binlog ファイルと pos 方式を使...

MySQLの最適化の詳細な分析とパフォーマンス

導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...

JavaScript キャンバスで 9 マスのグリッドカットの効果を実現

この記事では、9グリッドカット効果を実現するためのキャンバスの具体的なコードを紹介します。具体的な内...

レスポンシブレイアウトの概要(推奨)

レスポンシブレイアウト開発の基礎知識この章は主に以下の部分に分かれています• レスポンシブデザインを...

React Hooksを使用する際のよくある落とし穴

React Hooks は React 16.8 で導入された新しい機能で、クラスを使用せずに状態や...

mysql 簡単な操作例を表示

この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...

deepin apt コマンドを使用して最新バージョンの docker をインストールする方法

ステップ1: Ubuntuソースを追加するルートに切り替える suルートソフトウェアソースファイルの...

Webデザインチュートリアル(8):Webページの階層と空間デザイン

<br />前回の記事:Webデザイン講座(7):Webページ制作の効率化1:必要な小言...

mysql5.7 以降で my.ini を設定するための詳細な手順

Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリ、my-...