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.0.16 winx64 および Linux でルート ユーザーのパスワードを変更する方法

データベースへの接続などの基本的な操作はご自身で行ってください。この記事ではパスワードの変更方法を中...

HTML テーブルレイアウト例の説明

HTML ドキュメント内の要素は次々に配置され、ブロックレベル要素の前後に改行が追加されるだけで、合...

HTMLからPDFへの変換のための純粋なクライアント側と純粋なサーバー側の実装ソリューション

必要ユーザーがフォームに入力して「保存」をクリックすると、PDF ドキュメントを直接ダウンロードでき...

CSS3は円錐グラデーション効果を実現します

文法:背景画像: 円錐グラデーション(位置の角度から、開始色、...、最後の色)最初のパラメータ:開...

MySQL 5.7.18 でパスワードを変更する方法

MySQL 5.7.18 でパスワードを変更する方法: 1. まずMySQLサーバーをシャットダウン...

実稼働環境でのNginx高可用性ソリューションの実装プロセスの分析

準備: 192.168.16.128 192.168.16.129 2 台の仮想マシン。 Nginx...

CSSで半透明の背景色を実現する2つの方法について簡単に説明します。

ページをレイアウトする際、ユーザーに異なる視覚効果を与えるために、div の背景色を半透明の状態に設...

Nginx の負荷分散と動的および静的分離の原理と構成

目次1. Nginxは負荷分散の原則を実装する2. Nginxの動的および静的分離の原則Nginx ...

HTML H タイトルタグの使用

H タグ、特に h1 タグの使用は常に議論の的となっている問題であり、私たちが研究する価値のある問題...

mysql8.0.20 のデータディレクトリを移行する方法

mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...

HTML webpackプラグインの使用に関する簡単な分析

html-webpack-pluginプラグインを使用してページを開始すると、htmlページをメモリ...

IE8 と Chrome でテーブルの幅を修正する方法

IE8 や Chrome で上記の設定を使用すると、画面の最大幅に合わせて表示が統一され、各列の幅は...

Alibaba Cloud CentOS7 サーバーの nginx 構成と FAQ の分析

序文:この記事は、jackyzm のブログ https://www.cnblogs.com/jack...

Web フォントの読み込みを最適化する方法をご存知ですか?

タイトル通りです!一般的に使用される font-family はブラウザの組み込みフォントを読み込み...

MySQL解凍版のインストール手順の詳しい説明

1. 公式サイトにアクセスします: D:\mysql-5.7.21-winx64\bin をダウンロ...