前端Excel导出
//获取列表数据之后前端导出为Excel
import * as XLSX from 'xlsx'
export function MixinExportJosnToExcel (
    json,
    name = 'data',
    type = 'application/octet-stream'
  ) {
    const wb = { SheetNames: [], Sheets: {}, Props: {} }
    if (!Array.isArray(json)) json = [json]
    json.forEach(item => {
      wb.SheetNames.push(item.sheet_name)
      wb.Sheets[item.sheet_name] = XLSX.utils.json_to_sheet(
        item.sheet_values,
        item.sheet_options
      )
    })
    const wopts = { bookType: 'xlsx', bookSST: false, type: 'binary' }
    const blob = new Blob([s2ab(XLSX.write(wb, wopts))], { type })
    const link = document.createElement('a')
    document.body.appendChild(link)
    link.style.display = 'none'
    link.href = window.URL.createObjectURL(blob)
    link.download = `${name}.xlsx`
    link.click()
    // 释放资源
    setTimeout(() => {
      URL.revokeObjectURL(link.href)
    }, 100)

    function s2ab (s) {
      if (typeof ArrayBuffer !== 'undefined') {
        const buf = new ArrayBuffer(s.length)
        const view = new Uint8Array(buf)
        for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
        return buf
      } else {
        const buf = new Array(s.length)
        for (let i = 0; i !== s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff
        return buf
      }
    }
  }
//使用
const json = {
   sheet_name: '表格导出名字',
   sheet_values: response.map(item => ({
     'keyName': item.xxx,
     'keyName': item.xxx,
     'keyName': item.xxx,
     'keyName': item.xxx,
   }))
 }
 MixinExportJosnToExcel(json, '表格导出名字')


//请求后端Bolb

//请求体需要加
{
 headers: {
      'Content-Type': 'application/x-download'
    },
 responseType: 'blob'//这个是重点
}

const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = `${this.treeNode.name}.xlsx`
link.click()
URL.revokeObjectURL(url)
document.removeChild(link)


//type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
//这个是xlsx格式的Blob类型

文章链接:http://iwebg.cn/index.php/2023/07/20/%e5%89%8d%e7%ab%afexcel%e5%af%bc%e5%87%ba/

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇