NextJs - ServerAction获取文件并处理Excel

devtools/2025/1/23 10:23:55/

NextJs - ServerAction获取文件并处理Excel

  • 一. 客户端
  • 二. ServerAction 处理

一. 客户端

'use client';
import { uploadExcel } from '@actions/batchInquirySystem/api';
import type { UploadProps } from 'antd';
import { Upload } from 'antd';/*** 创建问询内容*/
const Page = () => {const customRequest = async (option: any) => {const file = option.file as File;const formData = new FormData();formData.append('file', file);const response: any = await uploadExcel(formData);if (response.error) {option.onError(response.error);} else {option.onSuccess();}};const uploadProps: UploadProps = {accept: '.xlsx, .xls',customRequest,maxCount: 1,style: { width: '50vw' },};return (<div><Upload.Dragger {...uploadProps}>上传本地文件</Upload.Dragger></div>);
};export default Page;

二. ServerAction 处理

首先安装xlsx,处理excel文件

npm i xlsx

其次编写ServerAction:

'use server';import * as XLSX from 'xlsx';export const uploadExcel = async (formData: FormData) => {// 拿到 fileconst file = formData.get('file') as File;let data: any[] = [];try {// 要拿到对应的buffer流(直接用file是不行的)const bytes = await file.arrayBuffer();const content = Buffer.from(bytes);// 读取文件const workbook = XLSX.read(content, { type: 'buffer' });// 拿到所有 sheetconst workSheets = workbook.Sheets;// 拿到第一个 sheet 的数据 data = XLSX.utils.sheet_to_json(workSheets[workbook.SheetNames[0]]);} catch (e) {console.error(e);}// 打印数据console.log(data);return data;
};

http://www.ppmy.cn/devtools/152857.html

相关文章

Typescript 多个泛型参数详细解读

多个泛型参数的函数 : 函数中有多个泛型的参数。 示例&#xff1a; (() > {function getMsg<K, V>(value1: K, value2: V): [K, V] {return [value1, value2]}const arr1 getMsg<string,number>(jack,100.2345)console.log(arr1[0].split())console.log(arr1…

JavaScript —— 判断语句与循环语句

判断语句 JavaScript中的if-else语句与C、Python、Java中类似。 直接输出到控制台&#xff1a; test.html中的内容为&#xff1a; <script type"module">let score 90;if (score > 85) {console.log("A");} else if (score > 70) {console…

Pandas 数据分析(二)【股票数据】

股票数据分析 写在前面题目背景021 加载股票数据到CSV文件022 查看基本信息和数据统计023 更改索引列为普通数据列024 给数据添加月份和年份025 计算每年的平均收盘价026 找到收盘价最低的数据行027 筛选出部分数据列028 设置日期列为索引列029 删除不需要的数据列030 对数据列…

上位机工作感想-2024年工作总结和来年计划

随着工作年限的增增长&#xff0c;发现自己越来越不喜欢在博客里面写一些掺杂自己感想的东西了&#xff0c;或许是逐渐被工作逼得“成熟”了吧。2024年&#xff0c;学到了很多东西&#xff0c;做了很多项目&#xff0c;也帮别人解决了很多问题&#xff0c;唯独没有涨工资。来这…

Markdown Viewer 浏览器

GitCode - 全球开发者的开源社区,开源代码托管平台 Markdown Viewer 安装与配置完全指南-CSDN博客 Chrome安装Markdown Viewer 3.9插件_markdown viewer下载-CSDN博客 使用 火狐浏览器 Markdown Viewer – 下载 &#x1f98a; Firefox 扩展&#xff08;zh-CN&#xff09;

【如何与他人交流的问题】

一些朋友在学习的过程中&#xff0c;会问我一个问题&#xff0c;就是说网上怎么有那么多的**&#xff0c;这个**可能是白嫖党&#xff0c;也可能是中介&#xff0c;也可能是一些喜欢怼人的&#xff0c;还有一些朋友说自己每次出一个什么项目&#xff0c;下面就是说自己要准备圈…

【数据分享】1929-2024年全球站点的逐年最低气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站点…

代码随想录算法训练营day32

代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天&#xff0c…