前端结合xlsx.js+xlsx-style.js源码实现自定义excel文件导出

这篇具有很好参考价值的文章主要介绍了前端结合xlsx.js+xlsx-style.js源码实现自定义excel文件导出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

      js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。

创建excel流程

创建一个excel会经历以下过程:

  1. 创建一个工作薄
  2. 创建一个sheet
  3. 创建表格行列等

所以我们用js-xlsx创建excel同样的道理:

  1. 创建工作薄(WorkBook)
  2. 创建sheet(WorkBook.Sheet)
  3. 创建表格行列(WorkBook.sheet[])

快速上手

安装:

npm i xlsx xlsx-style -S

解决运行时插件报错:
xlsx-style.js报错Can‘t resolve ‘./cptable‘ in ‘xxx\node_modules_xlsx

引入:

import * as XLSX from 'xlsx'
import * as XLSX2 from 'xlsx-style'

导出:

const workbook = XLSX.utils.book_new() // 创建工作簿
const worksheet = XLSX.utils.json_to_sheet(data) // json结构转sheet页
const worksheet = XLSX.utils.table_to_sheet(data) // dom结构转sheet页
const worksheet = XLSX.utils.aoa_to_sheet(data) // 数组转sheet页
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1') // 插入sheet页命名为sheet1
XLSX.writeFile(workbook, 'new.xlsx') // 输入文件

指定范围替换值/样式

` 提示:默认导出表格文字样式是cablili,大小12,居左,字符串格式

自定义替换函数:

  • range:替换范围
  • custom:样式或者默认值

示例:

custom = [
    {
        range: { start: 'A1', end: 'B2' },
        cellStyles: {
            border: {
              top: { style: 'thin', color: { rgb: '000000' } },
              left: { style: 'thin', color: { rgb: '000000' } },
              bottom: { style: 'thin', color: { rgb: '000000' } },
              right: { style: 'thin', color: { rgb: '000000' } }
            },
            font: {
                name: '宋体',
                sz: 11,
                color: '000000',
                bold: false,
                underline: false,
                italic: false
            },
            alignment: {
                vertical: 'center',
                horizontal: 'center',
                wrapText: false
            },
            fill: {
                bgColor: 'ffffff'
            }
        },
        newValue: ''
    }
]

实际逻辑:

custom.forEach(item => {
    const range = {
        s: XLSX.utils.decode_cell(item.range.start), // 将输入的{start: 'A1'} 解析
        e: XLSX.utils.decode_cell(item.range.end) // 将输入的{end: 'F10'} 解析
    }
    for (let row = range.s.r; row <= range.e.r; row++) {
        for (let col = range.s.c; col <= range.e.c; col++) {
            const cellRef = XLSX.utils.encode_cell({ c: col, r: row })
            if (item.newValue) { // 批量替换单元格的值
                worksheet[cellRef] = { t: 's', v: item.newValue, z: XLSX.utils.encode_cell({ c: col, r: row }) }
                break
            }
            if (item.cellStyles && worksheet[cellRef]) worksheet[cellRef].s = item.cellStyles // 批量替换单元格的样式
        }
    }
})

由于xlsx.js不能提供样式的插入,因此需要使用xlsx-style.js的write方法;
由源码可得:
xlsx.js库,javascript,前端,excel
xlsx.js库,javascript,前端,excel
继续往下看:
在write_zip_type这个方法中new了一个StyleBuilder对象;
xlsx.js库,javascript,前端,excel
在StyleBuilder对象内部完成了给表格增加样式的操作;
xlsx.js库,javascript,前端,excel

小结

       以上文章提供了关于使用js-xlsx库创建和导出Excel文件的详细指南。文章首先介绍了js-xlsx的基本概念和用途,然后提供了代码示例和解释,帮助开发人员了解如何使用该库进行Excel文件的操作。

       在文章中,我们学习了如何使用js-xlsx来创建工作簿、添加工作表以及设置单元格的值和样式。我们还了解了如何使用自定义替换函数和样式构建器来实现批量替换值和样式的功能。

       总的来说,这篇文章是一个很好的参考资料,对于想要使用js-xlsx库的开发人员来说尤其有用。它提供了必要的指导,使我们能够轻松地处理Excel文件,并根据需要进行自定义操作。文章来源地址https://www.toymoban.com/news/detail-837939.html

到了这里,关于前端结合xlsx.js+xlsx-style.js源码实现自定义excel文件导出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 纯前端导出,设置导出xlsx文件样式xlsx-js-style

    设置导出的表格样式,xlsx-js-style!真的绝绝子! 1.下载xlsx-js-style依赖 2.在main.js中挂载到vue原型上,方便使用  3.页面具体写法 参考:前端根据后端返回数据导出指定样式的表格(xlsx-js-style)_前端excel导出指定格式-CSDN博客

    2024年01月17日
    浏览(31)
  • 前端使用xlsx-js-style导出Excel文件并修饰单元格样式

    安装 导出 excel 较常见的 js 库是之一是 xlsx, xlsx 算是基础版本,不能对单元格进行样式(对齐方式、文字颜色、背景颜色等)的修饰,如果需要修饰单元格,可使用 xlsx-js-style 引入 需要导出的数据源 将数据源转成需要的二维数组 定义 Excel 表头 将定义好的表头添加到 body

    2023年04月08日
    浏览(35)
  • 前端JS实现导出xlsx文件

    需求背景: 需要导出表格的数据,由于后端不提供导出接口,所以由前端通过JSON数据导出实现。 使用的插件: js-export-excel 安装: npm install js-export-excel 使用: 亲测有用,只要前端能拿到的是表格全量数据,就能直接导出表格所有数据。但如果是后端分页查询的表格,前端

    2024年02月04日
    浏览(42)
  • 前端使用 xlsx.js 工具读取 excel 遇到时间日期少 43 秒的解决办法

    在使用 xlsx 读取 excel 的时间格式的数据时,如 ‘2023-11-30’,‘2023/11/30’ ,默认会读取一串数字字符串,如:‘45260’,此时需要在 read 的时候传入一个配置项: 此时拿到的是标准的时间格式 :‘Wed Nov 29 2023 23:59:17 GMT+0800(中国标准时间)’ ,这个时间格式是带时区的,有没

    2024年02月04日
    浏览(37)
  • 免费下载xlsx.full.min.js包,并放入前端代码里,在html+vue中引用

    访问 xlsx.js 的 GitHub 页面:https://github.com/SheetJS/sheetjs 在 GitHub 页面中,找到 \\\"Code\\\" 按钮,然后点击它,在下拉菜单中选择 \\\"Download ZIP\\\",以下载 xlsx.js 的最新版本。 解压下载的 ZIP 文件。 在解压后的文件夹中,你会找到 xlsx.full.min.js 文件。将这个文件复制到你的前端项目中,通

    2024年02月02日
    浏览(27)
  • 前端实现(excel)xlsx文件预览

    使用的框架: React 要使用的库: exceljs、handsontable 接到一个任务,是要前端实现文件预览效果,百度了一圈,发现也没有什么好的方法可以完美的将表格渲染出来。在前端中有 sheetjs 和 exceljs 可以对xlsx文件进行解析,本来一开始我用的是 sheetjs ,但是在样式获取上遇到了麻烦,

    2024年02月06日
    浏览(39)
  • xlsx库实现纯前端导入导出Excel

    最近做了前端导入、导出 Excel 的需求,用到了 js-xlsx 这个库,该库文档提供的用例很少,并不是很友好。本文总结一下我是如何实现需求的。 提供一个 Excel 文件,将里面的内容转成 JSON 导入数据 提供一个 JSON 文件,生成 Excel 文件并导出 导入与导出既可以前端做,也可以后

    2023年04月08日
    浏览(40)
  • 纯前端实现文件预览(pdf、docx 、xlsx)详细过程

    我详细这个当这个需求来的时候,有很大一部分人跟我的想法是一样的纯前端如何去实现多文件预览。确实这个功能很让人头疼,虽然市面上也有很多成型的插件,但是极少数能满足不同文件的预览,要么就是用第三方的链接去预览。这种虽然是最简单的方式。但是好多公司

    2024年02月14日
    浏览(28)
  • vue+xlsx实现前端模版下载、导入和导出excel文件

    产品需求:后端不想写下载,导入和导出的接口,让我们前端自己实现。 这里我们就可以用xlsx插件来实现,我们不多说了,先放一下实现的图片,下面我们分别把模版下载、导入和导出的代码放上来,想用的话,直接复制粘贴即可! 模版下载图片 导出图片: 好了,下面我

    2024年02月13日
    浏览(37)
  • 基于Js和Java实现xlsx\xls文档的导入和下载

    ​实现xlsxxls文档的导入、导出 ​导入效果: ​导出效果: 导出效果图 1.2.1、实体类 1.2.2、导入实体类 1.2.3、控制层 1.2.4、服务层 1.2.5、服务实现层 1、表格样式: 基本情况 单位:测试单位 2024年 第一列数据 第二列数据 第三列数据 第四列数据 第五列数据 实现代码 2、表格

    2024年03月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包