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

前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式

這篇具有很好參考價值的文章主要介紹了前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

安裝

導(dǎo)出 excel 較常見的 js 庫是之一是 xlsx,xlsx 算是基礎(chǔ)版本,不能對單元格進行樣式(對齊方式、文字顏色、背景顏色等)的修飾,如果需要修飾單元格,可使用 xlsx-js-style

npm install xlsx-js-style

引入

import XLSXS from 'xlsx-js-style';

需要導(dǎo)出的數(shù)據(jù)源

// 一般我們拿到的是從接口中請求到的對象數(shù)組,在使用是需要轉(zhuǎn)成二維數(shù)組,下面有介紹
const data = [
  { name: '商品01', mb_num: 50, mb_sum: 5000, pc_num: 30, pc_sum: 3000, total_num: 80, total_sum: 8000 },
  { name: '商品02', mb_num: 50, mb_sum: 5000, pc_num: 30, pc_sum: 3000, total_num: 80, total_sum: 8000 },
  { name: '商品03', mb_num: 50, mb_sum: 5000, pc_num: 30, pc_sum: 3000, total_num: 80, total_sum: 8000 },
]

將數(shù)據(jù)源轉(zhuǎn)成需要的二維數(shù)組

const body = data.map(x => ([x.name, x.mb_num, x.mb_sum, x.pc_num, x.pc_sum, x.total_num, x.total_sum]))

// 轉(zhuǎn)換后的數(shù)據(jù)為一個二維數(shù)組
[
  ['商品01', 50, 5000, 30, 3000, 80, 8000]
  ['商品02', 50, 5000, 30, 3000, 80, 8000]
  ['商品03', 50, 5000, 30, 3000, 80, 8000]
]

定義 Excel 表頭

/*
    定義表頭,每一行即是一個數(shù)組,數(shù)組中的元素即是一個個單元格內(nèi)容。
    如果單元格不需要樣式,那么每個元素類型為字符串即可。如:['一月(2022年01月)'], 
    如果單元格需要樣式,那么數(shù)組中的元素就需要為一個個對象,在此對象中定義單元格的樣式等等。
*/
    const header = [
      // 第一行,需要樣式,則數(shù)組中元素為對象,進行定義樣式。
      [
        {
          v: '一月(2023年01月)',
          t: 's',
          s: {
            // font 字體屬性
            font: {
              bold: true,
              sz: 14,
              name: '宋體',
            },
            // alignment 對齊方式
            alignment: {
              vertical: 'center', // 垂直居中
              horizontal: 'center', // 水平居中
            },
            // border 邊框?qū)傩?/span>
            border: {
              top: { style: 'thin' },
              bottom: { style: 'thin' },
              left: { style: 'thin' },
              right: { style: 'thin' }
            },
            // fill 顏色填充屬性
            fill: {
              fgColor: { rgb: '87CEEB' },
            },
          },
        },
      ],
      ['商品名稱', '手機客戶端', '', '電腦客戶端', '', '總計', ''],
      ['', '銷售數(shù)量', '銷售金額', '銷售數(shù)量', '銷售金額', '銷售數(shù)量', '銷售金額']
    ]

將定義好的表頭添加到 body 中

body.unshift(...header);

將二維數(shù)組轉(zhuǎn)成 sheet

// 這里我們舉例是用 aoa_to_sheet ,所以是需要將數(shù)據(jù)源轉(zhuǎn)成一個二維數(shù)組
const sheet = XLSXS.utils.aoa_to_sheet(body);

// aoa_to_sheet  	是將【一個二維數(shù)組】轉(zhuǎn)化成 sheet
// json_to_sheet 	是將【由對象組成的數(shù)組】轉(zhuǎn)化成sheet
// table_to_sheet  	是將【table的dom】直接轉(zhuǎn)成sheet

!merges 設(shè)置單元格合并

如果需要設(shè)置單元格合并,則定義好merges ,添加到 sheet 中。

merges 為一個對象數(shù)組,每個對象設(shè)定了單元格合并的規(guī)則。

{ s: { r: 0, c: 0 }, e: { r: 0, c: 2 } }, 即為一個規(guī)則,s:開始位置, e:結(jié)束位置, r:行, c:列

const merges = [
  { s: { r: 0, c: 0 }, e: { r: 0, c: 6 } },
  { s: { r: 1, c: 1 }, e: { r: 1, c: 2 } },
  { s: { r: 1, c: 3 }, e: { r: 1, c: 4 } },
  { s: { r: 1, c: 5 }, e: { r: 1, c: 6 } },
  { s: { r: 1, c: 0 }, e: { r: 2, c: 0 } },
]
sheet['!merges'] = merges; // 添加到sheet中

!cols 設(shè)置列寬

cols 為一個對象數(shù)組,依次表示每一列的寬度。

const cols = [
    { wch: 10 },
    { wch: 10 }, 
    { wch: 10 },
    { wch: 10 },
    { wch: 10 },
    { wch: 10 }, 
    { wch: 10 }
];
sheet['!cols'] = cols; // 添加到sheet中

!rows 設(shè)置行高

rows 為一個對象數(shù)組,依次表示每一行的高度

const rows = [
    { hpx: 20 }, 
    { hpx: 16 },
    { hpx: 18 }
]
sheet['!rows'] = rows; // 添加到sheet中

創(chuàng)建虛擬的 workbook

Excel整個表格可稱為 workbook。里面的每張表分別是 sheet

const workbook = xlsx.utils.book_new();

向 workbook 中添加 sheet

XLSXS.utils.book_append_sheet(workbook, sheet, 'sheet名稱');

// 一個 workbook 允許添加多個 sheet,即可以同時創(chuàng)建多個表
// xlsx.utils.book_append_sheet(workbook, sheet2, 'sheet名稱2');

導(dǎo)出 workbook

// 注意:定義導(dǎo)出 excel 的名稱時需要加上后綴 .xlsx
xlsx.writeFile(workbook, 'excel名稱.xlsx');

完整示例

import XLSXS from 'xlsx-js-style';
......

// 需要導(dǎo)出的數(shù)據(jù)源
const data = [
  { name: '商品01', mb_num: 50, mb_sum: 5000, pc_num: 30, pc_sum: 3000, total_num: 80, total_sum: 8000 },
  { name: '商品02', mb_num: 50, mb_sum: 5000, pc_num: 30, pc_sum: 3000, total_num: 80, total_sum: 8000 },
  { name: '商品03', mb_num: 50, mb_sum: 5000, pc_num: 30, pc_sum: 3000, total_num: 80, total_sum: 8000 },
]

// 將數(shù)據(jù)源轉(zhuǎn)成我們需要的二維數(shù)組
const body = data.map(x => ([x.name, x.mb_num, x.mb_sum, x.pc_num, x.pc_sum, x.total_num, x.total_sum]))

/* 定義表頭
    定義表頭,每一行即是一個數(shù)組,數(shù)組中的元素即是一個個單元格內(nèi)容。
    如果單元格不需要樣式,那么每個元素類型為字符串即可。如:['一月(2022年01月)'], 
    如果單元格需要樣式,那么數(shù)組中的元素就需要為一個個對象,在此對象中定義單元格的樣式等等。
    這里只針對第一行進行舉例:
*/

const header = [
  [
    {
      v: '一月(2023年01月)',
      t: 's',
      s: {
        // font 字體屬性
        font: {
          bold: true,
          sz: 14,
          name: '宋體',
        },
        // alignment 對齊方式
        alignment: {
          vertical: 'center', // 垂直居中
          horizontal: 'center', // 水平居中
        },
        // fill 顏色填充屬性
        fill: {
          fgColor: { rgb: '87CEEB' },
        },
      },
    },
  ],
  ['商品名稱', '手機客戶端', '', '電腦客戶端', '', '總計', ''],
  ['', '銷售數(shù)量', '銷售金額', '銷售數(shù)量', '銷售金額', '銷售數(shù)量', '銷售金額']
]

body.unshift(...header);// 將定義好的表頭添加到 body 中
const sheet = xlsx.utils.aoa_to_sheet(body);// aoa_to_sheet 將二維數(shù)組轉(zhuǎn)成 sheet

// 設(shè)置合并單元格
const merges = [
  { s: { r: 0, c: 0 }, e: { r: 0, c: 6 } },
  { s: { r: 1, c: 1 }, e: { r: 1, c: 2 } },
  { s: { r: 1, c: 3 }, e: { r: 1, c: 4 } },
  { s: { r: 1, c: 5 }, e: { r: 1, c: 6 } },
  { s: { r: 1, c: 0 }, e: { r: 2, c: 0 } },
]
sheet['!merges'] = merges; // 將merges添加到sheet中

// 設(shè)置列寬
const cols = [ { wch: 10 },{ wch: 10 },{ wch: 10 },{ wch: 10 },{ wch: 10 },{ wch: 10 },{ wch: 10 } ];
sheet['!cols'] = cols; // 將cols添加到sheet中

// 
const rows = [ { hpx: 20 },{ hpx: 16 },{ hpx: 18 }]
sheet['!rows'] = rows; // 將rows添加到sheet中,設(shè)置行高

const workbook = XLSXS.utils.book_new();// 創(chuàng)建虛擬的 workbook
XLSXS.utils.book_append_sheet(workbook, sheet, 'sheet名稱'); // 向 workbook 中添加 sheet
XLSXS.writeFile(workbook, 'excel名稱.xlsx'); // 導(dǎo)出 workbook
// 注意:定義導(dǎo)出 excel 的名稱時需要加上后綴 .xlsx

效果圖

前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式文章來源地址http://www.zghlxwxcb.cn/news/detail-403772.html

總結(jié)

  • 創(chuàng)建虛擬的 workbook、將數(shù)組轉(zhuǎn)成 sheet、向workbook中添加sheet導(dǎo)出workbook,這四個步驟是必要的。
  • 設(shè)置合并單元格、設(shè)置列寬設(shè)置行高是可選的,根據(jù)需求進行添加。
  • 如果添加樣式需要 border 則需要在被合并的單元格位置進行占位。

到了這里,關(guān)于前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件

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

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

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

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

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

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

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

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

    2024年02月13日
    瀏覽(95)
  • 前端導(dǎo)出表格 修改樣式(xlsx-style)用法

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

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

    2024年02月13日
    瀏覽(22)
  • 前端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)
  • 前端基于XLSX實現(xiàn)數(shù)據(jù)導(dǎo)出到Excel表格,以及提示“文件已經(jīng)被損壞,無法打開”的解決方法

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

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

    2024年01月23日
    瀏覽(37)
  • 【微信小程序】導(dǎo)出 Excel 報表并分享,使用xlsx庫生成 Excel,使用echars插入圖表、使用pdfmake導(dǎo)出為PDF文件

    要在微信小程序中導(dǎo)出 Excel 報表并分享,可以使用第三方庫 xlsx 來生成 Excel 文件,并使用 wx.saveFile 方法將文件保存到本地,然后使用 wx.shareFile 方法來分享文件。 以下是一個示例代碼,演示如何在微信小程序中導(dǎo)出 Excel 報表并分享: 首先,安裝依賴庫 xlsx ,可以使用 npm

    2024年02月13日
    瀏覽(24)
  • 前端使用xlsx插件讀取excel文件數(shù)據(jù)

    使用 xlsx 插件在前端讀取Excel文件數(shù)據(jù)具有以下優(yōu)點和缺點,適用于以下場景: 簡單易用: xlsx 插件提供了簡單的API來讀取Excel文件數(shù)據(jù),無需復(fù)雜的配置和依賴。 完整的功能: xlsx 插件支持讀取各種Excel文件格式,包括XLS和XLSX等常見格式,可以讀取多個工作表和多種數(shù)據(jù)類

    2024年02月14日
    瀏覽(27)
  • xlsx庫實現(xiàn)純前端導(dǎo)入導(dǎo)出Excel

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

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

    2023年04月08日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包