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 のインストールと設定のグラフィックチュートリアル

推薦する

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します

3 ノード MGR 内の 1 つのノードに異常があり、MGR クラスターに再度追加する必要があるとし...

nginxリバースプロキシによるセッション障害の問題の解決策

同僚から助けを求められました。バックエンド システムへのログインは成功したものの、システムには正常に...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

MySQLでカンマ区切り値の列を列に変換する方法

序文場合によっては、第 1 正規形設計パターンに従わないビジネス テーブルに遭遇することがあります。...

Linux 環境での Oracle 導入チュートリアル

1. 環境と関連ソフトウェア仮想マシン: VMwore Workstation Linuxシステム:...

ファイルのダウンロードを実現する javascript Blob オブジェクト

目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...

JDカルーセル効果を実現するための純粋なHTMLとCSS

JD カルーセルは、動的な効果を追加せず、主に位置決めの知識を使用して、純粋な HTML と CS...

MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...

最新の高品質な英語無料フォント36個を公開

01. 無限フォントのダウンロード02. バンダフォントのダウンロード03. ロールアップフォントの...

MySQL レプリケーション メカニズムの原理の説明

背景レプリケーションはデータの完全なコピーです。レプリケーションが必要な理由として、まず思い浮かぶの...

Vue.jsは音楽プレーヤーを実装します

この記事では、音楽プレーヤーを実装するためのVue.jsの具体的なコードを参考までに共有します。具体...

要素の読み込み効果を実現するための純粋なHTML+CSS

これは Element UI の読み込みコンポーネントのエフェクトです。かっこいいですね。実装してみ...