react 读取excel中的内容并解析成json格式的

引用xlsx库来完成这个功能
下载库:npm下载可能会报错,用yarn正常

npm install xlsx --save
//or
yarn add xlsx

模块导入:

import XLSX from 'xlsx';

基础代码:

 <input type="file" onChange={this.HandleImportFile} />

处理逻辑:

HandleImportFile = (e) => {
    let { files } = e.target
    // 获取文件名称
    let name = files[0].name
    // 获取文件后缀
    let suffix = name.substr(name.lastIndexOf("."));

    let reader = new FileReader();
    reader.onload = (event) => {
      try {
        // 判断文件类型是否正确
        if (".xls" != suffix && ".xlsx" != suffix) {
          message.error("选择Excel格式的文件导入!");
          return false;
        }

        let { result } = event.target
        // 读取文件
        let workbook = XLSX.read(result, { type: 'binary' });
        let data = []
        // 循环文件中的每个表
        for (let sheet in workbook.Sheets) {
          if (workbook.Sheets.hasOwnProperty(sheet)) {
            // 将获取到表中的数据转化为json格式
            data = data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
          }
        }

        console.log(data)

      } catch (e) {
        message.error('文件类型不正确!');
      }

    }
    reader.readAsBinaryString(files[0]);
  }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React 展示 JSON 格式数据到一个表格里面,可以通过以下步骤实现: 1. 定义一个组件,例如 `Table`,用于展示表格数据。 2. 在组件定义一个状态,例如 `data`,用于保存从外部传入的 JSON 格式数据。 3. 在组件的 `render()` 方法,将 JSON 数据转化为 JSX 代码,生表格的表头和表格内容,并返回表格的 JSX 代码。 以下是示例代码: ```javascript import React, { Component } from 'react'; class Table extends Component { constructor(props) { super(props); this.state = { data: props.data // 保存从外部传入的 JSON 数据到组件状态 }; } render() { const { data } = this.state; // 从组件状态获取 JSON 数据 if (!data || !data.length) { return null; // 如果 JSON 数据为空,则返回空 } // 生表头 const columns = Object.keys(data[0]); const tableHeader = columns.map((column, index) => ( <th key={index}>{column}</th> )); // 生表格内容 const tableBody = data.map((row, index) => ( <tr key={index}> {columns.map((column, index) => ( <td key={index}>{row[column]}</td> ))} </tr> )); // 返回表格的 JSX 代码 return ( <table> <thead> <tr>{tableHeader}</tr> </thead> <tbody>{tableBody}</tbody> </table> ); } } export default Table; ``` 以上代码,`data` 是从外部传入的 JSON 格式数据,通过 `this.state` 将其保存到组件状态。在 `render()` 方法,先判断传入的 JSON 数据是否为空,如果为空则返回空。然后生表头和表格内容的 JSX 代码,并返回完整的表格的 JSX 代码。最后通过 `export default Table` 将组件导出,可以在其他组件引入并使用。例如: ```javascript import React, { Component } from 'react'; import Table from './Table'; class App extends Component { constructor(props) { super(props); this.state = { data: [ { name: 'Alice', age: 20, gender: 'Female' }, { name: 'Bob', age: 25, gender: 'Male' }, { name: 'Charlie', age: 30, gender: 'Male' }, ] // 定义 JSON 格式数据 }; } render() { const { data } = this.state; // 从组件状态获取 JSON 数据 return ( <div> <Table data={data} /> // 将 JSON 数据传递给表格组件 </div> ); } } export default App; ``` 以上代码,在 `App` 组件定义了 JSON 格式数据,并将其传递给 `Table` 组件。在 `Table` 组件,通过 `this.props.data` 获取传入的 JSON 数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值