xlsx版本 0.18.5  react版本 17.0.2

前提 :使用 xlsx.readFile (`${process.env.PUBLIC_URL}/test.xlsx`) 无法 拿到文件,但 a.href 时可以拿到文件 。

  • 使用 a.href 时,它是基于浏览器环境,可以使用相对路径进行文件加载
  • XLSX.readFile 方法主要是用于在服务器端运行的情况下加载本地文件

解决方案:

import * as XLSX from 'xlsx'; * 下载文件 * */ async function addDataToWorkbook() { try { const response = await fetch(`${process.env.PUBLIC_URL}/test.xlsx`); const arrayBuffer = await response.arrayBuffer(); const data = new Uint8Array(arrayBuffer); const workbook = XLSX.read(data, { type: 'array' }); // 1.获取第一个工作表 const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; // 2. 获取第一行作为模板 const templateRow = XLSX.utils.sheet_to_json(sheet, { header: 1 })[0]; // 3. 清空工作表中的数据(除第一行外) const range = XLSX.utils.decode_range(sheet['!ref']); for (let rowNum = range.s.r + 1; rowNum <= range.e.r; rowNum++) { const rowAddress = XLSX.utils.encode_row(rowNum); for (let colNum = range.s.c; colNum <= range.e.c; colNum++) { const cellAddress = XLSX.utils.encode_col(colNum) + rowAddress; delete sheet[cellAddress]; // 4. 添加数据到工作表 const rows = [ ['John', 'Jane'], [28, 32], // ... Add more data XLSX.utils.sheet_add_aoa(sheet, [templateRow, ...rows], { origin: 0 }); // 5. 生成新的 Excel 文件 const updatedWorkbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(updatedWorkbook, sheet, sheetName); const updatedData = XLSX.write(updatedWorkbook, { bookType: 'xlsx', type: 'array' }); // 6. Download the new Excel file const blob = new Blob([updatedData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = 'updated.xlsx'; link.click(); } catch (error) { console.error('加载文件出错:', error); 是一款开源的 JavaScript 库,提供了 读取 、写入、解析和生成 Excel 文件 的能力。它是运行在浏览器端和 Node. js 等环境中的纯 JavaScript 库,具有跨平台的特性。 Node. js 中的 js - xlsx 库可以读写excel表格 文件 参考资料http://scarletsky.github.io/2016/01/30/node js -process-excel/#%E5%AE%9E%E6%88%98 在使用这个库之前,先介绍库中的一些概念。 workbook对象,指的是整份 Excel 文档。我们在使用 js - xlsx 读取 Excel 文档之后就会获得workbook对象。 worksheet对象,指的是 Excel 文档中的表。我们... 近期公司开始做绩效,某一天上午 HR 妹纸发了份 Excel 模板过来,让我下发给小组内成员填写。当天下午下班前,组内的绩效表就收齐了,接下来我就开始进入下一个环节,逐一打开每个 Excel 表为每个人打分。由于只有十几份绩效表,所以很快就打完分了。 不过问题来了,虽然已经打完分了,但我对小组内成员的每个考核项得分和总分的情况却还是一片空白。想要一目了然,当然得简单做个统计报表咯。那么如何收集每个人的数据呢?当然最简单的方式就一个个打开组内成员的绩效表,然后一个个统计,不过对于这种方式,我是拒绝的。作为一个 在介绍这个库之前,我们先来介绍 Excel 的一些相关概念。workbook 对象:整个 Excel 文档,使用 js - xlsx 读取 Excel 文档之后就会获得 workbook 对象。worksheet 对象:Excel 文档中的表,一份 Excel 文档中可以包含很多表,而每张表对应的就是 worksheet 对象。cell 对象:worksheet 中的单元格,一个单元格就是一个 cell 对象。它们之间的关系如下:1234567891011121314。 文章目录获取数据获取第一个 execle 工作簿表格1. 输出 js on 格式2. 输出 csv 格式3. 输出 html 格式4.输出 formulae 格式输出成 文件 全部代码 data. xlsx 公共配置 文件 放在这里有一个好处就是任何人可以实时 修改 配置 文件 ,然后程序会根据你的 修改 运行对应的逻辑或者变量,如: 我们的开发人员做了这个配置 文件 功能,我们就可以告诉其他非研发同事在这里配置所需 内容 ,是不是很方便?下面来看一下 1.在 public 中创建config. js window.config = { baseUrl: 'xxxxx', mainTitle: 'xxxx'. 项目 有一个需求,将某个信息存在记事本 文件 中, 前端 文件 内容 读出来并存下来,将这些信息作为参数传给后台 因为 项目 的环境就选用的是。 react +antd 方式实现,Upload组件在上传前的事件中截取下来 前端 拿到的是一个 js on数据,需要 读取 文件 才行 引用的 文件 : import { Button, Form, Upload } from "antd"; import { UploadOutlined } from '@ant-design/icons'; 正文的方法 const uploadAr 原本 项目 要求 前端 把excel中的数据导入指定表格中,并把指定表格的数据导出到excel中,单纯的数据导入导出功能直接使用 js - xlsx 则满足要求。后续要求导出的excel 文件 带样式,使用 js - xlsx 无法满足,加上 xlsx -style则可设置excel样式。现在要求根据模板生成excel 文件 ,即把数据插入预设好的excel 文件 中,由于 js - xlsx 加上 XLSX .read(file, {...,}) 读取 excel模板时样式不完整,最终无法生成与excel模板样式一样的 文件 。查了一下是免费的。 2、更改表格数据,重新设置表格数据的方法(changeTableData)。3、工作区改变、Select改变的方法(handleChange)。1、 文件 改变、工作区改变调用的方法(handleUpload)。表格数据如下:Sheet1数据9条 Sheet2数据100条 Sheet3没数据。 项目 需求:将Excel表格 文件 中的数据取出之后进行保存到数据库( 前端 实现)5、 文件 内工作区列表(Select选择框的options)4、上传 文件 (改变工作区的时候会用到)7、默认工作区( 文件 工作区的第一个) import XLSX from " xlsx ";//必要依赖 import FileSaver from "file-saver";//必要依赖 import {Message} from "antd" import _ from "lodash" //三个参数,title是生成的Excel 文件 名,headers是 文件 的头部,values为具体的 js on数据 export function exportCampaignL