当前位置: 首页 > news >正文

前端处理 Excel 文件

引入XLSX 

   XLSX 是一个流行的 JavaScript 库,用于处理 Excel 文件(包括 .xls 和 .xlsx 格式)。它可以在 Node.js 环境和浏览器中运行,提供了丰富的 API 来读取、写入、修改 Excel 文件。当你使用 import * as XLSX from 'xlsx'; 这行代码时,你实际上是在从 xlsx 包中导入所有的导出内容,并将它们作为一个名为 XLSX 的对象来使用。这里有几个基本的 XLSX 库用法示例,展示如何使用这个库来读取和写入 Excel 文件:

读取 Excel 文件

假设你有一个名为 example.xlsx 的 Excel 文件,你想读取其中的数据。

const workbook = XLSX.readFile('example.xlsx'); // 读取 Excel 文件  
const firstSheetName = workbook.SheetNames[0]; // 获取第一个工作表的名称  
const worksheet = workbook.Sheets[firstSheetName]; // 通过名称获取第一个工作表  // 将工作表转换为 JSON 对象  
const json = XLSX.utils.sheet_to_json(worksheet, {header:1}); // {header:1} 表示第一行为表头  
console.log(json);

写入 Excel 文件

如果你想创建一个新的 Excel 文件或修改一个现有的文件并保存它,你可以这样做:

// 创建一个新的工作簿  
const workbook = XLSX.utils.book_new();  // 创建一个新的工作表  
const worksheet = XLSX.utils.json_to_sheet([{name: "Sheet JS", data: [1, 2, 3]}]);  // 将工作表添加到工作簿  
XLSX.utils.book_append_sheet(workbook, worksheet, "My Sheet");  // 写入文件  
XLSX.writeFile(workbook, 'new_example.xlsx');

注意,上面的示例中 json_to_sheet 函数的输入数据格式是为了展示如何创建一个包含特定数据的工作表,并不完全符合 Excel 表格的常见数据结构。通常,你会传入一个对象数组,每个对象代表一行,对象的键对应列名。

表格数据转为 Excel 文件并导出

npm install file-saver 
import { saveAs } from 'file-saver';
//引入导出api
 let data=[[1,2,3],[4,5,6]
]
// 将数据转换为工作表const worksheet = XLSX.utils.aoa_to_sheet(data);// 创建工作簿并添加工作表const workbook = XLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');// 生成Excel文件const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });// 使用blob和FileReader创建一个URL然后下载const dataBlob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' });saveAs(dataBlob, 'demp.xlsx');

注意事项

  • 当你在 Node.js 环境中使用 XLSX 库时,需要确保你已经通过 npm 或 yarn 安装了它(npm install xlsx 或 yarn add xlsx)。
  • 在浏览器中使用时,你可能需要通过 <script> 标签或类似的方式引入库文件。
  • XLSX 库支持多种格式的 Excel 文件(包括 .xls),但处理 .xls 文件时可能需要额外的库(如 SheetJS/xlsx 的一部分功能)或依赖。
  • 使用 XLSX 库时,请确保遵循其 API 文档,以充分利用其功能。
http://www.lryc.cn/news/414622.html

相关文章:

  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • Redis进阶(四):哨兵
  • 蓝屏事件:网络安全的启示
  • 技术方案评审原则
  • 117页PPT埃森哲-物流行业信息化整体规划方案
  • 百度网盘不下载怎么直接打印文件?
  • 设置了 robots.txt 禁止爬虫抓取,为什么还是能被百度搜索出来
  • DedeCMS-V5.7.82-UTF8织梦管理系统漏洞
  • 【Python】字符串练习题及代码示例
  • fluent动网格profile udf 注意事项
  • 【doghead】mac构建 2: player 端 clion构建
  • 论网络流(最大流篇)--新手入门超详解--包教包会
  • 环境搭建:全面详尽的 MongoDB Shell MongoDB Server介绍、安装、验证与配置指南(以 Windows 系统为主)
  • 使用 OpenSearch 的 K-NN 向量搜索来增强搜索功能
  • Less-2(闭合)
  • mysql介绍
  • 【ROS学习】ROS中 use_sim_time 参数的含义与作用
  • python-查找元素3(赛氪OJ)
  • 苹果 Safari 的隐私保护与广告追踪问题 :技术进展与挑战
  • pytest之fixture
  • Rancher
  • Wordpress建站问题记录
  • JavaFx中通过线程池运行或者停止多个周期性任务
  • 使用RabbitMQ实现异步支付状态通知
  • [最短路dijkstra],启动!!!
  • Java企业微信服务商代开发获取AccessToken示例
  • How does age change how you learn?(2)年龄如何影响学习能力?(二)
  • 可验证随机函数 vrf 概述
  • 鸿蒙双向绑定组件:TextArea、TextInput、Search、Checkbox,文本输入组件,图案解锁组件PatternLock
  • JS 算法 - 计数器