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

推薦する

CentOS7にNginxを素早くインストールする方法を教えます

目次1. 概要2. Nginxインストールパッケージをダウンロードする3. 依存パッケージをインスト...

MySQLクエリ条件の一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL クエリ条件の一般的な使用方法を説明します。ご参考までに、詳細...

Vue コンポーネントはどのように解析され、レンダリングされるのでしょうか?

序文この記事では、Vue コンポーネントがどのように解析され、レンダリングされるかを説明します。 V...

Vueはログインタイプの切り替えを実装します

この記事では、ログインタイプの切り替えを実装するためのVueの具体的なコードを例として紹介します。具...

HTMLフォーム要素の詳しい解説(パート2)

HTML 入力属性値属性value 属性は、入力フィールドの初期値を指定します。 <フォーム...

Clickhouse Docker クラスターの展開と構成を例を使って説明します

目次前面に書かれた環境の展開Zookeeper クラスタの展開Clickhouse クラスターの展開...

Robots.txtの詳細な紹介

Robots.txt はプレーンテキスト ファイルであり、Web サイト管理者は、ロボットによるアク...

Linuxカーネルの浮動小数点演算のサポートに関する簡単な説明

現在、ほとんどの CPU は浮動小数点ユニット (FPU) をサポートしています。FPU は、プロセ...

星のフラッシュ効果を実現するjs

この記事の例では、スターフラッシュ効果を実現するためのjsの具体的なコードを参考までに共有しています...

1時間で学ぶMySQLの基礎

目次MySQL を使い始めるMySQL 管理6. MySQL サーバーを起動および停止します。 7....

MySQL における一般的な高度な SQL ステートメント

MySQL 高度な SQL ステートメント kgc を使用します。 テーブルlocation(Reg...

MySqlエスケープの詳細な使用例

MySQL エスケープエスケープとは、エスケープ文字の本来の意味を意味します。エスケープ文字の目的は...

MySQL で 1 つのテーブルのフィールドを使用して別のテーブルのフィールドを更新する方法

1. 1列を変更する 学生の更新、都市c s.city_name = c.name を設定します こ...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...