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