引入 Sheetjs 的JS

<script src="./xlsx.min.js"></script>

Json 转 Excel

[
    {
        "姓名": "张三",
        "性别": "男",
        "年龄": 18
    },
    {
        "姓名": "李四",
        "性别": "女",
        "年龄": 19
    },
    {
        "姓名": "王二麻",
        "性别": "未知",
        "年龄": 20
    }
]
/**
 * JSON转换Excel
 */
function json2Sheet () {
    let json = [
        {
            "姓名": "张三",
            "性别": "男",
            "年龄": 18
        },
        {
            "姓名": "李四",
            "性别": "女",
            "年龄": 19
        },
        {
            "姓名": "王二麻",
            "性别": "未知",
            "年龄": 20
        }
    ]

    // 实例化一个工作簿
    let book = XLSX.utils.book_new()

    // 实例化一个Sheet
    let sheet = XLSX.utils.json_to_sheet(json, {
        header: ['姓名', '性别', '年龄']
    })

    // 将Sheet写入工作簿
    XLSX.utils.book_append_sheet(book, sheet, 'Sheet1')

    // 写入文件,直接触发浏览器的下载
    XLSX.writeFile(book, 'json2Sheet.xlsx')
}

Array 转 Excel

[
  ['姓名', '性别', '年龄'],
  ['张三', '男', '18'],
  ['李四', '女', '19'],
  ['王二麻', '未知', '20']
]
/**
 * 数组转换Excel
 */
function array2Sheet () {
    let data = [
        ['姓名', '性别', '年龄'],
        ['张三', '男', '18'],
        ['李四', '女', '19'],
        ['王二麻', '未知', '20']
    ]

    // 实例化一个工作簿
    let book = XLSX.utils.book_new()

    // 实例化一个Sheet
    let sheet = XLSX.utils.aoa_to_sheet(data)

    // 将Sheet写入工作簿
    XLSX.utils.book_append_sheet(book, sheet, 'Sheet1')

    // 写入文件,直接触发浏览器的下载
    XLSX.writeFile(book, 'array2Sheet.xlsx')
}

Table 转 Excel

如果只有一个表格,可以直接使用 table_to_book 来做,简单直接。@table2Sheet

同样,可以先使用 table_to_sheet,再使用 book_append_sheet 来做。@table2Sheet2

姓名 性别 年龄
张三 18
李四 19
王二麻 未知 20
/**
 * table转换Excel
 */
function table2Sheet () {
    let tableDom = document.querySelector('#table')

    let book = XLSX.utils.table_to_book(tableDom)

    // 写入文件,直接触发浏览器的下载
    XLSX.writeFile(book, 'table2Sheet.xlsx')
}

/**
 * table转换Excel
 */
function table2Sheet2 () {
    let tableDom = document.querySelector('#table')

    // 实例化一个工作簿
    let book = XLSX.utils.book_new()

    // 实例化一个Sheet
    let sheet = XLSX.utils.table_to_sheet(tableDom)

    // 将Sheet写入工作簿
    XLSX.utils.book_append_sheet(book, sheet, 'Sheet1')

    // 写入文件,直接触发浏览器的下载
    XLSX.writeFile(book, 'table2Sheet.xlsx')
}

多个Table 转 Excel

姓名 性别 年龄
张三 18
李四 19
王二麻 未知 20

名字 类别
TOM
大黄
/**
 * table转换Excel
 */
function table2SheetMulti () {
    let tableDom1 = document.querySelector('#table1')
    let tableDom2 = document.querySelector('#table2')

    // 实例化一个工作簿
    let book = XLSX.utils.book_new()

    // 实例化一个Sheet
    let sheet1 = XLSX.utils.table_to_sheet(tableDom1)
    let sheet2 = XLSX.utils.table_to_sheet(tableDom2)

    // 将Sheet写入工作簿
    XLSX.utils.book_append_sheet(book, sheet1, 'Sheet1')
    XLSX.utils.book_append_sheet(book, sheet2, 'Sheet2')

    // 写入文件,直接触发浏览器的下载
    XLSX.writeFile(book, 'table2SheetMulti.xlsx')
}