首页 > 其他分享 >#yyds干货盘点#JS 解析 excel 文件

#yyds干货盘点#JS 解析 excel 文件

时间:2022-11-02 22:36:40浏览次数:80  
标签:xml yyds const text excel JS file attributes 解析

JS解析excel文件分为如下几步:

  1. 使用 ​​js​​ 解压缩 ​​excel​​ 文件
  2. 获取到其中的 ​​sheet​​ 文件内容,然后将 ​​xml​​ 数据解析出来
  3. 将数据转换成我们想要的形状

ZIP 解压

关于 ​​JS​​​ 如何实现 ​​ZIP​​​ 解压的,上一篇文章也有提到,这里我们就不细说,直接使用 ​​jszip​​ 搞定:

document.querySelector('#file').addEventListener('change', async e => {
const file = e.target.files[0];
if (!file) return;
const zip = await JSZip.loadAsync(file);
const sheetXML = await zip.files['xl/worksheets/sheet1.xml'].async('string');
});
复制代码

快速搞定,现在 ​​sheetXML​​ 就是我们刚刚看到的 ​​sheet1.xml​​ 中的数据了。

XML 解析

然后我们即可解析 ​​XML​​​ 内容将其中数据取出,​​xml​​​ 解析原理很简单,和 ​​html parse​​ 一样,了解原理咱就直接随便搞个开源库帮忙搞定:

import convert from 'xml-js';

const result = convert.xml2json(sheetXML, { compact: true, spaces: 4 });
复制代码

然后我们就得到了这样一串 ​​JSON​​(删除了部分内容):

{
"_declaration": {
"_attributes": {}
},
"worksheet": {
"_attributes": {},
"sheetPr": {},
"dimension": {
"_attributes": {
"ref": "A1:C7"
}
},
"sheetData": {
"row": [
{
"_attributes": {
"r": "1",
"spans": "1:3"
},
"c": [
{
"_attributes": {
"r": "A1"
},
"v": {
"_text": "1"
}
},
{
"_attributes": {
"r": "C1"
},
"v": {
"_text": "2"
}
}
]
},
{
"_attributes": {
"r": "7",
"spans": "1:3"
},
"c": [
{
"_attributes": {
"r": "A7"
},
"v": {
"_text": "1"
}
},
{
"_attributes": {
"r": "C7"
},
"v": {
"_text": "2"
}
}
]
}
]
}
}
}

接下来,我们只需要将 ​​sheetData​​ 中的数据取出,然后按照内部的属性生成自己想要的数据格式即可。

标签:xml,yyds,const,text,excel,JS,file,attributes,解析
From: https://blog.51cto.com/u_11365839/5818402

相关文章

  • RxJS – Custom Operator
    前言虽然RxJS提供了非常多的Operators.但依然会有不够用的时候.这时就可以自定义Operator了. OperatorIsJustaFunction Observable=>ObservableOperato......
  • 基于H5+js开发一款音乐播放器
    前言:当下音乐播放器不胜其数,为了更好的掌握一些东西,我们来自己制作一个音乐播放器。文章目录:​​一.开发环境:​​​​二.页面视图:​​​​1.主文件入口(首页):​​​​2.音乐播......
  • Excel折线图设置坐标轴起点不为0
     ......
  • js 四级联动,利用的vue 的v-model双向绑定
    数据格式为:  <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0......
  • MySql之json_extract函数处理json字段
    ​​MySql之json_extract函数处理json字段​​在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后再代......
  • nvm & grep filter out only Node.js Latest LTS versions All In One
    nvm&grepfilteroutonlyNode.jsLatestLTSversionsAllInOne使用nvm&grep仅过滤出Node.js最新的LTS版本nvm&grep#字符串中包含空格,要使用双引号/......
  • fastjson的详细用法
    fastjson的详细用法1.作用:fastjson用于将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。2.导入依赖:<dependencies><dependency......
  • spreadsheet读取excel数据
    获取excel数据,网上很多都是通过“行”“列”循环获取的,其实spreadsheet本身就提供toArray方法来获取sheet中的数据根本不需要手动去循环一共分为四个步骤:......
  • js加密之扁平化
    前言今天要说的扁平化和普通的不太一样,今天看到一个比较有意思的js加密代码,我一开始分析了很多遍没发现问题,最后才发现和普通的扁平化有什么不同。源代码(一小部分做示例)fu......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百四十三题-双列布局-浮动
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......