Excel 表格和 Node.js 实现数据转换工具

news/2025/2/21 12:35:37/

这个工具的核心思路是:

  1. 前端:使用 SheetJS (xlsx) 解析和导出 Excel 数据,并提供 UI 进行增删改查。
  2. 后端 (Node.js + Express):处理 Excel 数据的转换、存储,并提供 API 接口。

1. 安装依赖

前端和后端项目分别安装 xlsx 相关依赖。

前端vue

javascript">npm install xlsx

后端 (Node.js + Express)

javascript">npm install express multer xlsx fs

2. 前端实现 (Vue 3 + SheetJS)

前端主要实现:

  • 解析 Excel 文件,并展示为可编辑的表格
  • 提供增删改查操作
  • 处理 Excel 文件的导出

前端代码

javascript"><template><div><input type="file" @change="handleFileUpload" /><button @click="exportExcel">导出 Excel</button><table border="1"><thead><tr><th v-for="(col, index) in columns" :key="index">{{ col }}</th><th>操作</th></tr></thead><tbody><tr v-for="(row, rowIndex) in tableData" :key="rowIndex"><td v-for="(value, colIndex) in row" :key="colIndex"><input v-model="tableData[rowIndex][columns[colIndex]]" /></td><td><button @click="deleteRow(rowIndex)">删除</button></td></tr></tbody></table><button @click="addRow">添加行</button></div>
</template><script setup>
import { ref } from "vue";
import * as XLSX from "xlsx";const tableData = ref([]);
const columns = ref([]);// 解析上传的 Excel 文件
const handleFileUpload = (event) => {const file = event.target.files[0];const reader = new FileReader();reader.onload = (e) => {const data = new Uint8Array(e.target.result);const workbook = XLSX.read(data, { type: "array" });const sheetName = workbook.SheetNames[0];const sheet = workbook.Sheets[sheetName];const parsedData = XLSX.utils.sheet_to_json(sheet);if (parsedData.length) {columns.value = Object.keys(parsedData[0]);tableData.value = parsedData;}};reader.readAsArrayBuffer(file);
};// 添加新行
const addRow = () => {const newRow = {};columns.value.forEach((col) => {newRow[col] = "";});tableData.value.push(newRow);
};// 删除行
const deleteRow = (index) => {tableData.value.splice(index, 1);
};// 导出 Excel 文件
const exportExcel = () => {const worksheet = XLSX.utils.json_to_sheet(tableData.value);const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");XLSX.writeFile(workbook, "table_data.xlsx");
};
</script>

3. 后端实现 (Node.js + Express + Multer)

后端主要实现:

  • 解析 Excel 并转换为 JSON
  • 处理增删改查 API
  • 支持上传和下载 Excel

后端代码

javascript">const express = require("express");
const multer = require("multer");
const fs = require("fs");
const XLSX = require("xlsx");const app = express();
const upload = multer({ dest: "uploads/" });app.use(express.json());// 解析 Excel 并转换为 JSON
app.post("/upload", upload.single("file"), (req, res) => {const filePath = req.file.path;const workbook = XLSX.readFile(filePath);const sheetName = workbook.SheetNames[0];const sheet = workbook.Sheets[sheetName];const jsonData = XLSX.utils.sheet_to_json(sheet);fs.unlinkSync(filePath); // 删除临时文件res.json({ data: jsonData });
});// 导出 Excel
app.get("/export", (req, res) => {const sampleData = [{ Name: "Alice", Age: 25, City: "New York" },{ Name: "Bob", Age: 30, City: "Los Angeles" },];const worksheet = XLSX.utils.json_to_sheet(sampleData);const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");const filePath = "export.xlsx";XLSX.writeFile(workbook, filePath);res.download(filePath, () => fs.unlinkSync(filePath)); // 发送后删除
});app.listen(3000, () => console.log("Server running on port 3000"));

4. 使用方式

前端

  1. 运行 Vue 代码,上传 Excel 文件,进行增删改查,最后导出 Excel。

后端

1.启动后端:

javascript">node server.js

2.访问 /export 进行 Excel 下载。


http://www.ppmy.cn/news/1573883.html

相关文章

数据中心基础设施绿色建维服务认证专业团队认监委备案

在“双碳”目标的引领下&#xff0c;数据中心行业正朝着绿色低碳的方向加速转型。作为数据中心稳定运行的基石&#xff0c;基础设施的绿色运维至关重要。而数据中心基础设施绿色建维服务认证&#xff0c;正是为数据中心运营商和服务提供商量身打造的绿色运维能力“试金石”。 …

MCU M4架构 M7架构

**ARM Cortex-M4** 和 **ARM Cortex-M7** 是两种常见的微控制器&#xff08;MCU&#xff09;内核架构&#xff0c;属于 ARM Cortex-M 系列&#xff0c;主要用于嵌入式系统和物联网设备。它们的设计目标和性能特性有所不同&#xff0c;适用于不同的应用场景。 以下是 Cortex-M4…

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…

Mac 清理缓存,提高内存空间

步骤 1.打开【访达】 2.菜单栏第五个功能【前往】&#xff0c;点击【个人】 3.【command shift J】显示所有文件&#xff0c;打开【资源库】 4.删除【Containers】和【Caches】文件 Containers 文件夹&#xff1a;用于存储每个应用程序的沙盒数据&#xff0c;确保应用程序…

英伟达(NVIDIA)芯片全解析:专业分类、应用场景与真实案例

引言 你知道吗&#xff1f;你每天使用的智能手机、AI 语音助手、自动驾驶汽车&#xff0c;甚至是电影特效背后&#xff0c;都有英伟达&#xff08;NVIDIA&#xff09;的芯片在默默工作。NVIDIA 不仅仅是“游戏显卡”的代名词&#xff0c;它的 GPU 和 AI 计算平台已经广泛应用于…

冒险岛079 V8 整合版源码搭建教程+IDEA启动

今天教大家来部署下一款超级怀旧游戏冒险岛&#xff0c;冒险岛源码是开源的&#xff0c;但是开源的代码会有各种&#xff0c;本人进行了加工整合&#xff0c;并且用idea进行了启动测试&#xff0c;经过修改后没有任何问题。 启动截图 后端控制台 前端游戏界面 声明 冒险岛源码…

DeepSeek 助力 Vue 开发:打造丝滑的评分组件(Rating)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

MySQL智障离谱问题,删了库确还存在、也不能再创建同名库

1、问题 今天跟后端朋友接毕设单子的时候&#xff0c;后端穿过来的【weather.sql】这个文件没弄好&#xff0c;导致这个【weather】数据库的数据是错的&#xff0c;因此我用datagrip的GUI界面直接右键删除&#xff0c;结果就是tmd删不掉&#xff0c;ok&#xff0c;我只能在那新…