国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

sheetJs / xlsx-js-style 純前端實(shí)現(xiàn)導(dǎo)出 excel 表格及自定義單元格樣式

這篇具有很好參考價(jià)值的文章主要介紹了sheetJs / xlsx-js-style 純前端實(shí)現(xiàn)導(dǎo)出 excel 表格及自定義單元格樣式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


一、安裝

  • xlsx 地址:https://www.npmjs.com/package/xlsx
  • SheetJs 地址:https://docs.sheetjs.com/docs/
  • xlsx-js-style 地址:https://www.npmjs.com/package/xlsx-js-style
npm install xlsx-js-style

二、創(chuàng)建基礎(chǔ)工作表

<script lang="ts" setup>
import { utils, writeFileXLSX } from 'xlsx'

const list = [
    { Name: 'Bill Clinton', Index: 42 },
    { Name: 'GeorgeW Bush', Index: 43 },
    { Name: 'Barack Obama', Index: 44 },
    { Name: 'Donald Trump', Index: 45 },
    { Name: 'Joseph Biden', Index: 46 },
]

const exportFile = () => {
    // 創(chuàng)建一個(gè)工作簿 workbook
    const workBook = utils.book_new()
    // 創(chuàng)建工作表 worksheet
    // json_to_sheet 	是將【由對(duì)象組成的數(shù)組】轉(zhuǎn)化成sheet
    // aoa_to_sheet  	是將【一個(gè)二維數(shù)組】轉(zhuǎn)化成 sheet
    // table_to_sheet  	是將【table的dom】直接轉(zhuǎn)成sheet
    // 這里我們使用 json_to_sheet
    const workSheet = utils.json_to_sheet(list)
    // 將工作表放入工作簿中
    // utils.book_append_sheet(workbook, worksheet, name, true);
    utils.book_append_sheet(workBook, workSheet, 'Data')
    // 生成數(shù)據(jù)保存
    writeFileXLSX(workBook, `SheetJSVueAoO.xlsx`, {
        bookType: 'xlsx',
    })
}
</script>

<template>
    <div>
        <button @click="exportFile">創(chuàng)建工作表</button>
    </div>
</template>

sheetjs 樣式,sheetjs,xlsx-js-style,純前端導(dǎo)出excel,vue 前端導(dǎo)出excel,前端自定義單元格樣式

三、設(shè)置單元格寬度/高度/隱藏單元格

  • !cols 設(shè)置列寬
    cols 為一個(gè)對(duì)象數(shù)組,依次表示每一列的寬度
    wpx 字段表示以像素為單位,wch 字段表示以字符為單位
    hidden 如果為真,則隱藏該列

  • !rows 設(shè)置行高
    rows 為一個(gè)對(duì)象數(shù)組,依次表示每一行的高度

<script lang="ts" setup>
import { utils, writeFileXLSX } from 'xlsx-js-style'

const list = [
    {
        Name: 'Bill Clinton',
        Date: '2023-01-01',
        'Source category name': 'Excise Taxes',
        'Source subcategory name': 'Corporation Income Taxes',
    },
    {
        Name: 'GeorgeW Bush',
        Date: '2023-01-01',
        'Source category name': 'Excise Taxes',
        'Source subcategory name': 'Corporation Income Taxes',
    },
    {
        Name: 'Barack Obama',
        Date: '2023-01-01',
        'Source category name': 'Excise Taxes',
        'Source subcategory name': 'Corporation Income Taxes',
    },
    {
        Name: 'Donald Trump',
        Date: '2023-01-01',
        'Source category name': 'Excise Taxes',
        'Source subcategory name': 'Corporation Income Taxes',
    },
    {
        Name: 'Joseph Biden',
        Date: '2023-01-01',
        'Source category name': 'Excise Taxes',
        'Source subcategory name': 'Corporation Income Taxes',
    },
]

const exportFile = () => {
    // 創(chuàng)建一個(gè)工作簿 workbook
    const workBook = utils.book_new()
    // 創(chuàng)建工作表 worksheet
    const workSheet = utils.json_to_sheet(list)

    // 設(shè)置列寬
    // cols 為一個(gè)對(duì)象數(shù)組,依次表示每一列的寬度
    // wpx 字段表示以像素為單位,wch 字段表示以字符為單位
    // hidden 如果為真,則隱藏該列
    workSheet['!cols'] = [
        { wpx: 100 },
        { wch: 50 },
        { width: 30 },
        { hidden: true },
    ]

    // 設(shè)置行高
    // rows 為一個(gè)對(duì)象數(shù)組,依次表示每一行的高度
    workSheet['!rows'] = [{ hpx: 30 }, { hpt: 50 }, { hidden: true }]

    // 將工作表放入工作簿中
    // utils.book_append_sheet(workbook, worksheet, name, true);
    utils.book_append_sheet(workBook, workSheet, 'Data')
    // 生成數(shù)據(jù)保存
    writeFileXLSX(workBook, `SheetJSVueAoO.xlsx`, {
        bookType: 'xlsx',
    })
}
</script>

<template>
    <div>
        <button @click="exportFile">設(shè)置單元格寬度/高度/隱藏</button>
    </div>
</template>

sheetjs 樣式,sheetjs,xlsx-js-style,純前端導(dǎo)出excel,vue 前端導(dǎo)出excel,前端自定義單元格樣式

四、分配數(shù)字格式

<script lang="ts" setup>
import { utils, writeFileXLSX } from 'xlsx-js-style'

const list = [
    { Name: 'Barack Obama', Taxes: 726223 },
    { Name: 'GeorgeW Bush', Taxes: 3.5 },
    { Name: 'Bill Clinton', Taxes: 45571 },
    { Name: 'Donald Trump', Taxes: 0.0219 },
    { Name: 'Donald Trump', Taxes: new Date() },
    { Name: 'Joseph Biden', Taxes: 666666 },
]

const exportFile = () => {
    // 創(chuàng)建一個(gè)工作簿 workbook
    const workBook = utils.book_new()
    // 創(chuàng)建工作表 worksheet
    const workSheet = utils.json_to_sheet(list)

    // 分配數(shù)字格式
    workSheet['B3'].z = '"$"#,##0.00_);\\("$"#,##0.00\\)'
    workSheet['B4'].z = '#,##0'
    workSheet['B5'].z = '0.00%'
    workSheet['B6'].z = 'yyyy-mm-dd hh:mm:ss AM/PM'
    workSheet['B7'].z = '[Red](#,##0)'

    // 將工作表放入工作簿中
    // utils.book_append_sheet(workbook, worksheet, name, true);
    utils.book_append_sheet(workBook, workSheet, 'Data')
    // 生成數(shù)據(jù)保存
    writeFileXLSX(workBook, `SheetJSVueAoO.xlsx`, {
        bookType: 'xlsx',
    })
}
</script>

<template>
    <div>
        <button @click="exportFile">分配數(shù)字格式</button>
    </div>
</template>

五、超鏈接

<script lang="ts" setup>
import { utils, writeFileXLSX } from 'xlsx-js-style'

const list = [
    { Name: 'https://sheetjs.com' },
    { Name: '電子郵箱' },
    { Name: '訪問(wèn) C 盤文件' },
    { Name: '選中指定單元格' },
    { Name: '跳轉(zhuǎn)指定 Sheet' },
    { Name: 'Joseph Biden' },
]

const exportFile = () => {
    // 創(chuàng)建一個(gè)工作簿 workbook
    const workBook = utils.book_new()
    // 創(chuàng)建工作表 worksheet
    const workSheet = utils.json_to_sheet(list)

    // 鏈接 https://sheetjs.com
    workSheet['A2'].l = {
        Target: 'https://sheetjs.com',
        Tooltip: 'https://sheetjs.com',
    }

    // 鏈接電子郵箱
    workSheet['A3'].l = { Target: 'mailto:ignored@dev.null' }

    // 訪問(wèn)本地 C 盤文件
    workSheet['A4'].l = { Target: 'file:///C:/Users/pc/Downloads/receipts.xls' }

    // 選中指定單元格 A1:C5
    workSheet['A5'].l = { Target: '#A1:C5', Tooltip: '選中 A1:C5 ' }

    // 跳轉(zhuǎn)指定 Sheet
    workSheet['A6'].l = { Target: '#Data2!A1:C6', Tooltip: 'Data2' }

    workSheet['A7'].l = { Target: '#SheetJSDN', Tooltip: 'Defined Name' }

    // 將工作表放入工作簿中
    // utils.book_append_sheet(workbook, worksheet, name, true);
    utils.book_append_sheet(workBook, workSheet, 'Data')

    // 創(chuàng)建工作表2 worksheet
    var worksheet2 = utils.aoa_to_sheet([['Same', 'Cross', 'Name']])
    utils.book_append_sheet(workBook, worksheet2, 'Data2')

    // 定義的名稱, ref 選中的是當(dāng)前超鏈接所在單元格位置
    workBook.Workbook = {
        Names: [{ Name: 'SheetJSDN', Ref: 'Data2!A1:A1' }],
    }

    // 生成數(shù)據(jù)保存
    writeFileXLSX(workBook, `SheetJSVueAoO.xlsx`, {
        bookType: 'xlsx',
    })
}
</script>

<template>
    <div>
        <button @click="exportFile">超鏈接</button>
    </div>
</template>
  • 鼠標(biāo)移上去看到小手標(biāo)識(shí)及提示語(yǔ),點(diǎn)擊即可看到對(duì)應(yīng)的超鏈接效果;
    sheetjs 樣式,sheetjs,xlsx-js-style,純前端導(dǎo)出excel,vue 前端導(dǎo)出excel,前端自定義單元格樣式

六、單元格注釋

<script lang="ts" setup>
import { utils, writeFileXLSX } from 'xlsx-js-style'

const list = [{ Name: 'Vue' }, { Name: 'React' }, { Name: 'Angular' }]

const exportFile = () => {
    // 創(chuàng)建一個(gè)工作簿 workbook
    const workBook = utils.book_new()
    // 創(chuàng)建工作表 worksheet
    const workSheet = utils.json_to_sheet(list)

    // 添加注釋
    if (!workSheet.A2.c) workSheet.A2.c = []
    workSheet.A2.c.push({
        a: 'Vue',
        t: 'Vue 是一款用于構(gòu)建用戶界面的 JavaScript 框架',
    })

    if (!workSheet.A3.c) workSheet.A3.c = []
    // 如果設(shè)置為 true,則只有當(dāng)用戶將鼠標(biāo)懸停在注釋上時(shí),注釋才可見;
    workSheet.A3.c.hidden = true
    workSheet.A3.c.push({
        a: 'React',
        t: 'React 用于構(gòu)建 Web 和原生交互界面的庫(kù)',
    })

    if (!workSheet.A4.c) workSheet.A4.c = []
    // 如果設(shè)置為 true,則只有當(dāng)用戶將鼠標(biāo)懸停在注釋上時(shí),注釋才可見;
    workSheet.A4.c.hidden = true
    workSheet.A4.c.push({
        a: 'Angular',
        t: 'Angular 是一個(gè)應(yīng)用設(shè)計(jì)框架與開發(fā)平臺(tái),旨在創(chuàng)建高效而精致的單頁(yè)面應(yīng)用',
    })

    // 將工作表放入工作簿中
    utils.book_append_sheet(workBook, workSheet, 'Data')

    // 生成數(shù)據(jù)保存
    writeFileXLSX(workBook, `SheetJSVueAoO.xlsx`, {
        bookType: 'xlsx',
    })
}
</script>

<template>
    <div>
        <button @click="exportFile">單元格注釋</button>
    </div>
</template>

sheetjs 樣式,sheetjs,xlsx-js-style,純前端導(dǎo)出excel,vue 前端導(dǎo)出excel,前端自定義單元格樣式

七、公式

<script lang="ts" setup>
import { utils, writeFileXLSX, writeFile } from 'xlsx-js-style'

const list = [
    ['姓名', '語(yǔ)文', '數(shù)學(xué)', '英語(yǔ)', '總數(shù)', '最大值', '姓名去重'],
    ['張三', 80, 100, 100],
    ['李四', 90, 100, 80],
    ['李四', 85, 80, 100],
    ['王五', 100, 85, 90],
    ['張三', 90, 70, 90],
    ['趙六', 95, 90, 80],
    ['張三', 100, 80, 90],
]

const exportSimpleFormula = () => {
    var ws = utils.aoa_to_sheet([
        [6], // A1
        [8], // A2
        [{ t: 'n', v: 3, f: 'SUM(A1,A2)' }], // SUM 函數(shù)
        [{ t: 'n', v: 3, f: 'CONCAT("concat:",A1,A2)' }], // CONCAT 函數(shù)
    ])
    var wb = utils.book_new()
    utils.book_append_sheet(wb, ws, 'Sheet1')
    writeFile(wb, 'SheetJSFormula.xlsx')
}

const exportFile = () => {
    // 創(chuàng)建一個(gè)工作簿 workbook
    const workBook = utils.book_new()
    // 創(chuàng)建工作表 worksheet
    const workSheet = utils.aoa_to_sheet(list)

    utils.sheet_set_array_formula(workSheet, 'E2:E8', 'B2:B8+C2:C8+D2:D8', true)

    list.forEach((e: (string | number)[], index: number) => {
        if (index > 0) {
            utils.sheet_set_array_formula(
                workSheet,
                `F${index + 1}`,
                `MAX(B${index + 1},C${index + 1},D${index + 1})`,
                true
            )
        }
    })

    utils.sheet_set_array_formula(
        workSheet,
        'G2:G8',
        '_xlfn.UNIQUE(A2:A8)',
        true
    )

    // 將工作表放入工作簿中
    utils.book_append_sheet(workBook, workSheet, 'Data')

    // 生成數(shù)據(jù)保存
    writeFileXLSX(workBook, `SheetJSVueAoO.xlsx`, {
        bookType: 'xlsx',
    })
}
</script>

<template>
    <div>
        <button @click="exportSimpleFormula">簡(jiǎn)單公式</button>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <button @click="exportFile">數(shù)組公式</button>
    </div>
</template>
  • 給單元格增加公式,比如下面:求指定單元格中的最大值(MAX函數(shù));
  • 在 “結(jié)果” 雙擊即可看到對(duì)應(yīng)的公式,按 " ESC" 即可退出;
    sheetjs 樣式,sheetjs,xlsx-js-style,純前端導(dǎo)出excel,vue 前端導(dǎo)出excel,前端自定義單元格樣式

八、合并單元格

  • !merges 設(shè)置單元格合并
  • merges 為一個(gè)對(duì)象數(shù)組,每個(gè)對(duì)象設(shè)定了單元格合并的規(guī)則
  • 方法一:通過(guò) decode_range 設(shè)置范圍合并單元格
  • 方法二:手動(dòng)設(shè)置 A1-C1 的單元格合并(s:開始位置, e:結(jié)束位置, r:行, c:列)
<script lang="ts" setup>
import { utils, writeFile } from 'xlsx-js-style'

const exportFile = () => {
    var ws = utils.aoa_to_sheet([
        // 特別注意合并的地方后面預(yù)留 2 個(gè) null, 否則后面的內(nèi)容(本例中是第四列其它信息)會(huì)被覆蓋
        ['主要信息', null, null, '其它信息'],
        ['姓名', '性別', '年齡', '注冊(cè)時(shí)間'],
        ['張三', '男', 18, new Date()],
        ['李四', '女', 22, new Date()],
    ])
    if (!ws['!merges']) ws['!merges'] = []

    // 方法一:通過(guò) decode_range 設(shè)置范圍合并單元格
    ws['!merges'].push(utils.decode_range('A1:C1'))

    // 方法二:手動(dòng)設(shè)置 A1-C1 的單元格合并
    // merges 為一個(gè)對(duì)象數(shù)組,每個(gè)對(duì)象設(shè)定了單元格合并的規(guī)則
    // s:開始位置, e:結(jié)束位置, r:行, c:列

    // ws['!merges'] = [
    //     { s: { r: 0, c: 0 }, e: { r: 0, c: 2 } },
    // ]

    var wb = utils.book_new()
    utils.book_append_sheet(wb, ws, 'Sheet1')
    writeFile(wb, 'SheetJSVueAoO.xlsx')
}
</script>

<template>
    <div>
        <button @click="exportFile">合并單元格</button>
    </div>
</template>

sheetjs 樣式,sheetjs,xlsx-js-style,純前端導(dǎo)出excel,vue 前端導(dǎo)出excel,前端自定義單元格樣式

九、自定義單元格樣式

<script lang="ts" setup>
import { utils, writeFile } from 'xlsx-js-style'

const header = [
    [[]], // 占位
    [
        {}, // 占位
        {
            v: `工廠統(tǒng)計(jì)表 ${'\n'}`,
            t: 's',
            s: {
                font: {
                    sz: 15, //設(shè)置標(biāo)題的字號(hào)
                    bold: true, //設(shè)置標(biāo)題是否加粗
                    name: '宋體',
                },
                //設(shè)置標(biāo)題水平豎直方向居中,并自動(dòng)換行展示
                alignment: {
                    horizontal: 'center',
                    vertical: 'center',
                    wrapText: true,
                },
                fill: {
                    fgColor: { rgb: '9FE3FF' },
                },
            },
        },
    ],
]

const info = [
    [
        null,
        {
            v: '                                                                                                                                                                                                                                                                                                                                                                                                    統(tǒng)計(jì)時(shí)間:2023/01/01 00:00',
            t: 's',
            s: {
                fill: {
                    fgColor: { rgb: '9FE3FF' },
                },
            },
        },
    ],
    [
        null,
        {
            v: '                                                                                                                                                                                                                                                                                                                                                                                                    統(tǒng)計(jì)維度:按月',
            t: 's',
            s: {
                fill: {
                    fgColor: { rgb: '9FE3FF' },
                },
            },
        },
    ],
    [
        null,
        {
            v: '                                                                                                                                                                                                                                                                                                                                                                                                    統(tǒng)計(jì)周期:2023/01/01 至 2023/01/01',
            t: 's',
            s: {
                alignment: {
                    vertical: 'top',
                },
                fill: {
                    fgColor: { rgb: '9FE3FF' },
                },
            },
        },
    ],
]

const risk = [
    '序號(hào)',
    '險(xiǎn)別',
    '企財(cái)險(xiǎn)',
    '家財(cái)險(xiǎn)',
    '機(jī)動(dòng)車',
    '責(zé)任險(xiǎn)',
    '意外險(xiǎn)',
    '貨運(yùn)險(xiǎn)',
    '保證險(xiǎn)',
    '其他險(xiǎn)',
]

const data = risk.map((e) => {
    return {
        v: e,
        t: 's',
        s: {
            font: {
                bold: true, //設(shè)置標(biāo)題是否加粗
                name: '宋體',
            },
            //設(shè)置標(biāo)題水平豎直方向居中,并自動(dòng)換行展示
            alignment: {
                horizontal: 'center',
                vertical: 'center',
                wrapText: true,
            },
            border: {
                top: { style: 'thin', color: { rgb: '000000' } },
                bottom: { style: 'thin', color: { rgb: '000000' } },
                left: { style: 'thin', color: { rgb: '000000' } },
                right: { style: 'thin', color: { rgb: '000000' } },
            },
            fill: {
                fgColor: { rgb: '9FE3FF' },
            },
        },
    }
})

const random = (min: number, max: number): number => {
    return Math.floor(Math.random() * (max - min)) + min
}

const dataArr = () => {
    const items: (Object | null)[][] = []
    Array.apply(null, { length: 18 } as any).map((e, index: number) => {
        const item: (Object | null)[] = [null]
        Array.apply(null, { length: 10 } as any).map((ele, idx: number) => {
            item.push({
                v: idx === 0 ? index + 1 : random(1, 100000),
                t: 's',
                s: {
                    font: {
                        name: '宋體',
                    },
                    alignment: {
                        horizontal: 'center',
                        vertical: 'center',
                    },
                    border: {
                        top: { style: 'thin', color: { rgb: '000000' } },
                        bottom: { style: 'thin', color: { rgb: '000000' } },
                        left: { style: 'thin', color: { rgb: '000000' } },
                        right: { style: 'thin', color: { rgb: '000000' } },
                    },
                },
            })
        })
        items.push(item)
    })
    return items
}

const exportFile = () => {
    var ws = utils.aoa_to_sheet([
        ...header,
        ...info,
        [null, ...data],
        ...dataArr(),
    ])

    // 合并單元格
    if (!ws['!merges']) ws['!merges'] = []
    ws['!merges'].push(utils.decode_range('B2:K2'))
    ws['!merges'].push(utils.decode_range('B3:K3'))
    ws['!merges'].push(utils.decode_range('B4:K4'))
    ws['!merges'].push(utils.decode_range('B5:K5'))
    ws['!merges'].push(utils.decode_range('A2:A5'))
    ws['!merges'].push(utils.decode_range('L2:L5'))

    // 設(shè)置列寬
    // cols 為一個(gè)對(duì)象數(shù)組,依次表示每一列的寬度
    if (!ws['!cols']) ws['!cols'] = []
    ws['!cols'] = [
        { wpx: 70 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 118 },
        { wpx: 200 },
    ]

    // 設(shè)置行高
    // rows 為一個(gè)對(duì)象數(shù)組,依次表示每一行的高度
    if (!ws['!rows']) ws['!rows'] = []
    ws['!rows'] = [
        { hpx: 0 },
        { hpx: 40 },
        { hpx: 15 },
        { hpx: 15 },
        { hpx: 20 },
        { hpx: 20 },
        ...Array.apply(null, { length: dataArr().length } as any).map(() => {
            return { hpx: 20 }
        }),
    ]
    var wb = utils.book_new()
    utils.book_append_sheet(wb, ws, 'Sheet1')
    writeFile(wb, 'SheetJSVueAoO.xlsx')
}
</script>

<template>
    <div>
        <button @click="exportFile">單元格樣式</button>
    </div>
</template>

sheetjs 樣式,sheetjs,xlsx-js-style,純前端導(dǎo)出excel,vue 前端導(dǎo)出excel,前端自定義單元格樣式

十、項(xiàng)目地址

項(xiàng)目地址:https://github.com/aibujin/xlsx-js-style文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-742169.html

到了這里,關(guān)于sheetJs / xlsx-js-style 純前端實(shí)現(xiàn)導(dǎo)出 excel 表格及自定義單元格樣式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • xlsx庫(kù)實(shí)現(xiàn)純前端導(dǎo)入導(dǎo)出Excel

    xlsx庫(kù)實(shí)現(xiàn)純前端導(dǎo)入導(dǎo)出Excel

    最近做了前端導(dǎo)入、導(dǎo)出 Excel 的需求,用到了 js-xlsx 這個(gè)庫(kù),該庫(kù)文檔提供的用例很少,并不是很友好。本文總結(jié)一下我是如何實(shí)現(xiàn)需求的。 提供一個(gè) Excel 文件,將里面的內(nèi)容轉(zhuǎn)成 JSON 導(dǎo)入數(shù)據(jù) 提供一個(gè) JSON 文件,生成 Excel 文件并導(dǎo)出 導(dǎo)入與導(dǎo)出既可以前端做,也可以后

    2023年04月08日
    瀏覽(23)
  • 前端導(dǎo)出表格 修改樣式(xlsx-style)用法

    前端導(dǎo)出表格 修改樣式(xlsx-style)用法

    ????????xlsx-style 修改樣式的機(jī)制? 就是選中哪一行,那一列或者哪一個(gè)? 然后去修改? 比如表格最左上角的一個(gè)格子 坐標(biāo)是 (0, 0) 下標(biāo)? 也可以叫做? A1 選中之后 ? 可以修改其樣式? 1. 下載依賴 ? 首先下載依賴到項(xiàng)目 2. 引入到項(xiàng)目 3. 創(chuàng)建導(dǎo)出表格 ? ? ? ? 為什么

    2024年02月13日
    瀏覽(22)
  • 前端JS實(shí)現(xiàn)導(dǎo)出xlsx文件

    需求背景: 需要導(dǎo)出表格的數(shù)據(jù),由于后端不提供導(dǎo)出接口,所以由前端通過(guò)JSON數(shù)據(jù)導(dǎo)出實(shí)現(xiàn)。 使用的插件: js-export-excel 安裝: npm install js-export-excel 使用: 親測(cè)有用,只要前端能拿到的是表格全量數(shù)據(jù),就能直接導(dǎo)出表格所有數(shù)據(jù)。但如果是后端分頁(yè)查詢的表格,前端

    2024年02月04日
    瀏覽(25)
  • vue+xlsx實(shí)現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    vue+xlsx實(shí)現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    產(chǎn)品需求:后端不想寫下載,導(dǎo)入和導(dǎo)出的接口,讓我們前端自己實(shí)現(xiàn)。 這里我們就可以用xlsx插件來(lái)實(shí)現(xiàn),我們不多說(shuō)了,先放一下實(shí)現(xiàn)的圖片,下面我們分別把模版下載、導(dǎo)入和導(dǎo)出的代碼放上來(lái),想用的話,直接復(fù)制粘貼即可! 模版下載圖片 導(dǎo)出圖片: 好了,下面我

    2024年02月13日
    瀏覽(95)
  • vue導(dǎo)入導(dǎo)出excel、設(shè)置單元格背景色、文字居中、合并單元格、設(shè)置列寬(使用xlsx庫(kù)和xlsx-style庫(kù))

    xlsx 是由 SheetJS 開發(fā)的一個(gè)處理excel文件的npm庫(kù) 適用于前端開發(fā)者實(shí)現(xiàn)導(dǎo)入導(dǎo)出excel文件的經(jīng)典需求 為了區(qū)別于xlsx文件,突出其應(yīng)用語(yǔ)言,該庫(kù)通常又被稱為 js-xlsx 需要以下步驟: 安裝 xlsx 庫(kù) 你可以使用 npm 包管理器安裝 xlsx 庫(kù),也可以將 xlsx 下載到本地,然后在 HTML 文件中

    2024年02月16日
    瀏覽(20)
  • 前端基于XLSX實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出到Excel表格,以及提示“文件已經(jīng)被損壞,無(wú)法打開”的解決方法

    前端基于XLSX實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出到Excel表格,以及提示“文件已經(jīng)被損壞,無(wú)法打開”的解決方法

    一、vue實(shí)現(xiàn)導(dǎo)出excel 1、前端實(shí)現(xiàn) xlsx是一個(gè)用于讀取、解析和寫入Excel文件的JavaScript庫(kù)。它提供了一系列的API來(lái)處理Excel文件。使用該庫(kù),你可以將數(shù)據(jù)轉(zhuǎn)換為Excel文件并下載到本地。這種方法適用于在前端直接生成Excel文件的場(chǎng)景。 更多介紹可參見官網(wǎng) 1、安裝xlsx依賴 2、引

    2024年01月23日
    瀏覽(37)
  • 使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件

    導(dǎo)出數(shù)據(jù)是Web應(yīng)用程序中常見的功能之一。在許多情況下,我們需要將數(shù)據(jù)導(dǎo)出為Excel文件,以便用戶可以在本地計(jì)算機(jī)上查看和編輯數(shù)據(jù)。在本篇博客中,我們將介紹如何使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件。 XLSX.js是一個(gè)JavaScript庫(kù),它提供了一組API,可以將數(shù)據(jù)轉(zhuǎn)換

    2024年04月26日
    瀏覽(19)
  • js 實(shí)現(xiàn)純前端將數(shù)據(jù)導(dǎo)出excel兩種方式

    將table標(biāo)簽,包括tr、td等對(duì)json數(shù)據(jù)進(jìn)行拼接,將table輸出到表格上實(shí)現(xiàn),這種方法的弊端在于輸出的是偽excel,雖說(shuō)生成xls為后綴的文件,但文件形式上還是html,代碼如下 通過(guò)將json遍歷進(jìn)行字符串拼接,將字符串輸出到csv文件,代碼如下

    2024年02月15日
    瀏覽(27)
  • 前端excel文件處理,vue2 、file-saver、xlsx, excel文件生成與excel文件鏈接數(shù)據(jù)導(dǎo)出

    前端excel文件處理,vue2 、file-saver、xlsx, excel文件生成與excel文件鏈接數(shù)據(jù)導(dǎo)出

    安裝插件 如使用TS開發(fā),可安裝file-saver的TypeScript類型定義 下載文件流 本地文件下載 文件下載(列寬自適應(yīng)) 表格顯示,每列列寬自適應(yīng) xlsx文件鏈接數(shù)據(jù)導(dǎo)出 方法調(diào)用

    2024年02月11日
    瀏覽(28)
  • 純前端 —— 200行JS代碼、實(shí)現(xiàn)導(dǎo)出Excel、支持DIY樣式,縱橫合并

    純前端 —— 200行JS代碼、實(shí)現(xiàn)導(dǎo)出Excel、支持DIY樣式,縱橫合并

    前期回顧 Vue3 + TS + Element-Plus 封裝Tree組件 《親測(cè)可用》_vue3+ts 組件封裝-CSDN博客 https://blog.csdn.net/m0_57904695/article/details/131664157?spm=1001.2014.3001.5501 目錄 具體思路: 1. 準(zhǔn)備HTML結(jié)構(gòu) 2. 定義CSS樣式 3. 初始化表格數(shù)據(jù) 4. 創(chuàng)建表格函數(shù)createTable 5. 將表格添加到頁(yè)面中 6. 導(dǎo)出表格為E

    2024年02月02日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包