前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Salesforce LWC 实现上传Excel解析其内容

Salesforce LWC 实现上传Excel解析其内容

作者头像
朝夕
发布2024-08-21 11:41:51
970
发布2024-08-21 11:41:51
举报
文章被收录于专栏:Salesforce LWC

SheetJS参考文章:https://xlsx.nodejs.cn/docs/demos/cloud/salesforce Salesforce LWC 实现上传Excel解析其内容:https://cloud.tencent.com/developer/article/1803271

一、介绍SheetJS

SheetJS 是一个非常流行的 JavaScript 库,主要用于处理电子表格文件(如 Excel 文件)。它的功能包括读取、编辑、生成和写入各种格式的电子表格文件,支持 Excel 的 .xlsx.xls 文件以及其他类似的表格文件格式(如 .csv.ods 等)。

1. SheetJS 的主要功能:

1) 读取电子表格

可以从本地文件或通过网络获取的文件中读取数据,并将其解析为 JavaScript 对象。

支持多种文件格式,如 .xlsx.xls.csv.ods

2) 生成电子表格

以通过代码动态创建电子表格,并导出为不同的文件格式。

支持复杂的表格结构,如合并单元格、嵌套表格等。

3) 编辑电子表格

读取已有的表格文件后,可以修改表格中的内容,然后保存回去。

4)导出和下载

可以将处理后的数据导出为各种电子表格文件格式,并提供下载链接。

2. 典型使用场景:

  • 数据导入/导出:在企业级应用中,经常需要导入和导出数据,SheetJS 提供了强大的工具来实现这一点。
  • 数据分析:可以读取用户上传的 Excel 文件,进行数据解析和分析,然后展示结果。
  • 报表生成:根据系统中的数据生成复杂的报表,并导出为 Excel 文件供用户下载。

3.为什么使用 SheetJS?

  • 兼容性强:支持多种电子表格文件格式。
  • 易于集成:适用于浏览器、Node.js 环境等,容易与前后端框架集成。
  • 丰富的功能:支持多种操作,如读取、编辑、写入、格式转换等,满足大多数电子表格操作需求。

二、如何使用SheetJS

首先在vscode中创建好LWC组件

1.添加 SheetJS:

方法1:Download https://cdn.sheetjs.com/xlsx-0.20.3/package/dist/xlsx.full.min.js

方法2:终端运行命令

代码语言:txt
复制
curl -o xlsx.full.min.js https://cdn.sheetjs.com/xlsx-0.20.3/package/dist/xlsx.full.min.js

2.将文件移至 force-app/main/default/staticresources/ 文件夹并将文件重命名为 sheetjs.js

如果文件是从上一个命令下载的,mv 可以移动并重命名:

代码语言:txt
复制
mv xlsx.full.min.js force-app/main/default/staticresources/sheetjs.js

3.使用以下 XML 创建 force-app/main/default/staticresources/sheetjs.resource-meta.xml(在步骤 2 的文件夹中的 sheetjs.resource-meta.xml)

代码语言:txt
复制
<?xml version="1.0" encoding="UTF-8"?>
<StaticResource xmlns="http://soap.sforce.com/2006/04/metadata">
  <cacheControl>Private</cacheControl>
  <contentType>application/javascript</contentType>
</StaticResource>

4.再次部署项目Depoly this source to org,并确认Static Resources是否有sheetjs文件

A) 在 Salesforce 站点中,单击页面右上角的齿轮图标,然后选择 "设置"(当前应用的设置)。

¥A) In the Salesforce site, click on the gear icon in the top-right corner of the page and select "Setup" (Setup for current app).

B) 在左侧边栏搜索框中输入 "静止的"。点击 "静态资源"

¥B) Type "Static" in the left sidebar search box. Click "Static Resources"

5.粘贴以下代码:

代码语言:txt
复制
import { LightningElement, track } from 'lwc';
import sheetJS from '@salesforce/resourceUrl/sheetJS';
import { loadScript } from 'lightning/platformResourceLoader';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
export default class ExcelImportForLwc extends LightningElement {
    @track dataList = [];
    @track disableButton = true;
    connectedCallback() {
        loadScript(this, sheetJS).then(() => {
            console.log('加载 sheet JS完成');
 this.disableButton = false;
        });
    }
    excelFileToJson(event) {
        event.preventDefault();
 let files = event.target.files;
 const analysisExcel = (file) =>
 new Promise((resolve, reject) => {
 const reader = new FileReader();
                reader.readAsBinaryString(file);
                reader.onload = () => resolve(reader.result);
                reader.onerror = (error) => reject(error);
            });
        analysisExcel(files[0]).then((result) => {
 let datas = []; // 存储获取到的数据
 let XLSX = window.XLSX;
 let workbook = XLSX.read(result, {
                type: 'binary',
            });
 for (let sheet in workbook.Sheets) {
 if (
                    Object.prototype.hasOwnProperty.call(workbook.Sheets, sheet)
                ) {
                    datas = datas.concat(
                        XLSX.utils.sheet_to_json(workbook.Sheets[sheet])
                    );
                }
            }
 this.dataList = datas;
 const toastEvent = new ShowToastEvent({
                variant: 'success',
                message: '文件已经上传解析成功',
            });
 this.dispatchEvent(toastEvent);
        });
    }
a
    printResult() {
        console.log(JSON.stringify(this.dataList));
    }
}

代码语言:txt
复制
<template>
 <lightning-input type="file" label="上传" onchange={excelFileToJson} disabled={disableButton} accept="xlsx"
 multiple="false"></lightning-input>
 <lightning-button label="打印结果" onclick={printResult} disabled={disableButton}></lightning-button>
</template>

6.将组件部署到页面上

点击打印结果在控制台中查看内容

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、介绍SheetJS
    • 1. SheetJS 的主要功能:
      • 2. 典型使用场景:
        • 3.为什么使用 SheetJS?
        • 二、如何使用SheetJS
        相关产品与服务
        腾讯云 BI
        腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档