为了通过纯前端代码实现带有样式的excel导出。这里用到xlsx(SheetJs)+xlsx-style。因为xlsx不能实现样式。
由于xlsx-style是node环境,且多年未维护,前端会报错,并且很多文章都是通过改库的代码实现兼容,我这里选择下载解决了xlsx-style问题的一个库:xlsx-style-medalsoft。
具体代码
我这边是react项目,不过代码都跟react不相关,只是作为一个工具函数
excel.js
import { utils } from 'xlsx/xlsx.js'//因为我这里光引入xlsx会识别不了,大家看情况导入
import XLSX_STYLE from 'xlsx-style-medalsoft'
export function jsonToExcel(options = {}) {
const { rows, name } = options
const worksheet = utils.json_to_sheet(rows)
/* 设置样式 */
Object.keys(worksheet).forEach(key => {
if (['A1', 'B1', 'C1'].includes(key)) {
worksheet[key].s = {
alignment: { horizontal: 'center' },