美文网首页
vue、react等快速操作excel

vue、react等快速操作excel

作者: toShy | 来源:发表于2023-12-10 10:50 被阅读0次

写在前面

最近因为业务需要,需要在浏览器通过excel批量导入数据和快读导出数据,因此简单封装了下xlsx库,以便快速完成导入导出操作。

如何使用


# Basic Node.JS installation
npm install extend-excel --save

源码

extend-excel

场景1 Excel数据转化为JSON数据:

1)如果您需要将Excel文件中的所有数据转换为JSON,import_excel函数将为您提供帮助。

测试原始文件内容:

image.png
const { importExcel } = extendExcel

<!-- read file -->
const fileBuffer = fs.readFileSync(path.resolve(__dirname, './__mocks__/test.xlsx'))
const blob = new Blob([fileBuffer], { type : 'application/xlsx'});
const excelFile = new File([blob], 'test');

<!-- excel to json -->
const result = await importExcel(excelFile);
console.log(result)

2)如果您想将Excel文件的第一个工作表中的数据转换为JSON,您可以利用可选参数来实现这一点。

const { onlyFirst, XLSXReadOptions } = options

const result = await importExcel(excelFile, { onlyFirst: true })

3)如果您想将Excel文件的第一个工作表中的数据转换为JSON,并映射Excel头部名称,您可以利用可选参数来实现这一点。

const { onlyFirst, keyMapping, XLSXReadOptions } = options

const result = await importExcel(excelFile, {
  keyMapping: {
    测试1: 'test1',
    测试2: 'test2',
    测试3: 'test3',
    测试sheet1: 'testsheet1',
    测试sheet2: 'testsheet2',
    测试sheet3: 'testsheet3'
  }
})

结果:

{
  name: 'test',
  data: [
    { 'test1': 1, 'test2': 2, 'test3': 3 },
    { 'testsheet1': 1, 'testsheet2': 2, 'testsheet3': 3 }
  ]
}

4)如果您需要更多选项,您可以传递XLSXReadOptions参数,该参数与xlsx选项兼容。

场景2 JSON数据导出为xlsx:

1)如果您想要下载从JSON数据生成的Excel文件,export_excel函数可以帮助您。

const { exportExcel } = extend-excel

<!-- json to excel -->
const headers = {
    'test': '测试1',
    'test2': '测试2',
    'test3': '测试3',
    'testsheet1': '测试sheet1',
    'testsheet2': '测试sheet2',
    'testsheet3': '测试sheet3',
  }

const sourceData = [
    { 'test': 1, 'test2': 2, 'test3': 3 },
    { 'testsheet1': 1, 'testsheet2': 2, 'testsheet3': 3 }
  ]

const options = {}

const result = await exportExcel(headers, sourceData, options)

2)如果您想要自定义文件名并下载从JSON数据生成的Excel文件,export_excel函数可以帮助您。

const { exportExcel } = extend-excel

<!-- json to excel -->
const headers = {
    'test': '测试1',
    'test2': '测试2',
    'test3': '测试3',
    'testsheet1': '测试sheet1',
    'testsheet2': '测试sheet2',
    'testsheet3': '测试sheet3',
  }

const sourceData = [
    { 'test': 1, 'test2': 2, 'test3': 3 },
    { 'testsheet1': 1, 'testsheet2': 2, 'testsheet3': 3 }
  ]

const options = { filename: 'test-export' }

const result = await exportExcel(headers, sourceData, options)

3)如果您想要自定义下载文件的属性,您可以通过传递options参数来实现。

const { fileName, sheetName, XLSXOption } = options
Attribute name info
fileName 自定义下载文件的名称。
sheetName 自定义下载文件的工作表名称。
XLSXOption 调整xlsx库的选项。

Typescript Support

export interface DynamicObject {
  [key: string]: any
}

export interface ExportExcelOptions {
  fileName: string,
  sheetName: string,
  XLSXOption: WritingOptions
}

export interface ImportExcelOptions {
  onlyFirst: Boolean, // only first sheet
  XLSXReadOptions: ParsingOptions
}
ps:

以上内容仅为自己的学习过程,欢迎大家取其精华,丢其糟粕。若对以上内容有不同简介或看法,欢迎一起探讨,欢迎提Issues

相关文章

  • React浅析(七):ref使用

    在React等框架出现之前,web页面的交互是依靠操作DOM实现的,到了出现vdom概念出来,React和Vue等...

  • React事件总线

    在React开发中如果有跨组件之间的事件传递,应该如何操作?A、在Vue中我们可以通过Vue的实例,快速实现一个事...

  • 2018-10-09 vue的简单复习

    主流框架 vue angular react 1.vue简介 简化Dom操作 2.vue指令 3.vue过滤器 ...

  • Virtual DOM原理

    虚拟dom的实现,主要是通过控制数据来操作dom,Vue,React等框架都有用到,看代码目标dom js要想实现...

  • 使用 Webpack 进行代码分片

    在使用 React、Vue 等框架时,我们可以使用其配套的路由库如 react-router 和 vue-rout...

  • DOM操作成本到底高在哪儿?

    从我接触前端到现在,一直听到的一句话:操作DOM的成本很高,不要轻易去操作DOM。尤其是React、vue等MV*...

  • DOM 操作成本到底高在哪儿?

    从我接触前端到现在,一直听到的一句话:操作DOM的成本很高,不要轻易去操作DOM。尤其是React、vue等MV*...

  • Vue3学习与实战 · Ref获取真实DOM

    在使用 Vue 、React 等MVVM框架开发项目时,基本上很少需要直接手动去操作 DOM 了,但是也不可避免,...

  • 如何优雅地操作DOM

    在以前,操作DOM是一件非常麻烦的事情,虽然现在已经有类似React、Vue、Angular等框架帮助我们更容易地...

  • 如何做一个cli工具

    用习惯了react、vue等的cli工具,会发觉很顺手,快速创建项目,但是也会有缺点。生成的项目缺的东西太多。在开...

网友评论

      本文标题:vue、react等快速操作excel

      本文链接:https://www.haomeiwen.com/subject/fuaugdtx.html