最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript結(jié)合xlsx.js實現(xiàn)excel數(shù)據(jù)導出導入功能

 更新時間:2026年02月28日 09:36:04   作者:Cxiaomu  
在做后端開發(fā)管理實際業(yè)務開發(fā)中,有時會遇到處理導入、導出Excel文件的數(shù)據(jù),本文主要為大家詳細介紹了JS如何使用xlsx.js實現(xiàn)這一功能,下面小編就和大家簡單介紹一下吧

簡介

在做后端開發(fā)管理實際業(yè)務開發(fā)中,有時會遇到處理導入、導出Excel文件的數(shù)據(jù),比如多語言管理和報表數(shù)據(jù)。

將前端數(shù)據(jù)中對象數(shù)組格式的數(shù)據(jù)與excel格式數(shù)據(jù)進行相互轉(zhuǎn)換。

既然時對 Excel 文件進行處理,自然需要插件了,比如 xlsx 。

于是,進行簡單demo的實現(xiàn)與演示。

實現(xiàn)

安裝

安裝 xlsx

npm install xlsx --save
# or
yarn add xlsx

導出Excel文件數(shù)據(jù)

導出需要先獲取到指定數(shù)據(jù),然后對數(shù)據(jù)進行處理成合適的數(shù)據(jù)(即常規(guī)的列表數(shù)據(jù)),最后才是轉(zhuǎn)換成 Excel 。

如本身是列表數(shù)據(jù),可以對數(shù)據(jù)結(jié)構(gòu)不進行處理,僅取需要導出的數(shù)據(jù)。

import XLSX from 'xlsx';

/** 將列表數(shù)據(jù)過濾出需要導出的屬性 */
// objArr - 列表數(shù)據(jù),labels - 需要導出的屬性
const toBeExcelData = (objArr, labels) => {
  const resArr = []
  objArr.forEach((itemData) => {
    const theObj = {}
    const keys = Object.keys(itemData)
    keys.forEach((theKey) => {
      if (labels.includes(theKey)) theObj[theKey] = itemData[theKey]
    })
    resArr.push(theObj)
  })
  return resArr
}

/** 將數(shù)據(jù)轉(zhuǎn)成 Excel 文件并導出 */
const exportToExcel = (data) => {
  const worksheet = XLSX.utils.json_to_sheet(data);
  const workbook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); // 表名
  XLSX.writeFile(workbook, "exported-data.xlsx"); // 文件名,可加上文件路徑
}

導入Excel文件數(shù)據(jù)

這里,就開始實現(xiàn) Excel 文件數(shù)據(jù)導入了。

導入這里就比較簡單了,利用插件的函數(shù)進行獲取數(shù)據(jù)和格式轉(zhuǎn)換就可以了。

import XLSX from 'xlsx'

/** 獲取excel數(shù)據(jù)并解析 */
const getExcelData = (url) => {
  const workBook = XLSX.readFile(url) // 目標文件獲取
  let name = workBook.SheetNames[0] // 讀取表格中第一個表
  let sheet = workBook.Sheets[name] // 數(shù)據(jù)獲取
  return XLSX.utils.sheet_to_json(sheet) // 數(shù)據(jù)格式轉(zhuǎn)換
}

應用

導出

示例代碼

// 列表數(shù)據(jù)
const demoData = [
  { name: '122', age: '24e', state: true, date: '20231227', address: 'asdfgfgg' },
  { name: '2233', age: '23', state: false, date: '20231225', address: 'zxcv' },
  { name: '3344', age: '22', state: true, date: '20231226', address: 'vbnmz' },
  { name: '678', age: '21', state: false, date: '20231224', address: '23svvcx' },
  { name: '3322', age: '24', state: true, date: '20231221', address: 'wdvggtr' },
  { name: '2266', age: '42', state: false, date: '20231223', address: 'igbxsxx' }
]

// 需導出的字段
const demoLabels = ['name', 'state', 'date','address']

const testDemo = () => {
  const data = toBeExcelData(demoData, demoLabels); // 數(shù)據(jù)過濾
  exportToExcel(data); // 導出
}
testDemo(); // 執(zhí)行

效果

導入

示例代碼

這里就用剛剛導出的excel文件進行導入并輸出。

let resData = getExcelData('./exported-test.xlsx') // excel數(shù)據(jù)
console.log('input data: ', resData);

效果

到此這篇關(guān)于JavaScript結(jié)合xlsx.js實現(xiàn)excel數(shù)據(jù)導出導入功能的文章就介紹到這了,更多相關(guān)JavaScript excel數(shù)據(jù)導出導入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 常用的Javascript設(shè)計模式小結(jié)

    常用的Javascript設(shè)計模式小結(jié)

    javascript設(shè)計模式有很多種,本文給大家介紹常用的javascript設(shè)計模式,對javascript設(shè)計模式相關(guān)知識感興趣的朋友一起學習吧
    2015-12-12
  • JavaScript 對引擎、運行時、調(diào)用堆棧的概述理解

    JavaScript 對引擎、運行時、調(diào)用堆棧的概述理解

    這篇文章旨在深入挖掘JavaScript,以及向大家解釋JavaScript是如何工作的。非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • 小程序?qū)崿F(xiàn)錄音上傳功能

    小程序?qū)崿F(xiàn)錄音上傳功能

    這篇文章主要為大家詳細介紹了小程序?qū)崿F(xiàn)錄音上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • JavaScript算法教程之sku(庫存量單位)詳解

    JavaScript算法教程之sku(庫存量單位)詳解

    這篇文章主要給大家介紹了JavaScript算法教程之sku(庫存量單位)的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
    2017-06-06
  • JS 循環(huán)li添加點擊事件 (閉包的應用)

    JS 循環(huán)li添加點擊事件 (閉包的應用)

    這篇文章主要介紹了js循環(huán)li添加點擊事件 (閉包的應用)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • JavaScript正則表達式實例詳解

    JavaScript正則表達式實例詳解

    在編寫處理字符串的程序或網(wǎng)頁時,經(jīng)常會有查找符合某些復雜規(guī)則的字符串的需要。正則表達式就是用于描述這些規(guī)則的工具。換句話說,正則表達式就是記錄文本規(guī)則的代碼。
    2016-10-10
  • 很棒的Bootstrap選項卡切換效果

    很棒的Bootstrap選項卡切換效果

    這篇文章主要為大家分享了一款很棒的Bootstrap選項卡切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 詳解a++和++a的區(qū)別

    詳解a++和++a的區(qū)別

    搞開發(fā)已經(jīng)很久了,一直搞不懂a(chǎn)++和++a到底有所什么不同,后來通過查閱相關(guān)資料總結(jié)出一點規(guī)律,下面小編通過本文給大家介紹
    2017-08-08
  • JavaScript取消Promise操作的常見實現(xiàn)方式

    JavaScript取消Promise操作的常見實現(xiàn)方式

    在 JavaScript 中,Promise 本身沒有內(nèi)置的取消機制,但我們可以通過一些模式來實現(xiàn)類似取消的功能,以下是幾種常見的實現(xiàn)方式,需要的朋友可以參考下
    2025-10-10
  • javascript中等于(==)與全等(===)的區(qū)別說明

    javascript中等于(==)與全等(===)的區(qū)別說明

    等于(==)的情況下 只要值相同就返回True。而全等(===)的時候需要值和類型都要匹配才能返回True.
    2011-01-01

最新評論

五河县| 阿克陶县| 依兰县| 吴桥县| 关岭| 乌什县| 遂溪县| 阿拉善左旗| 南宁市| 呼伦贝尔市| 盘山县| 广汉市| 绩溪县| 南召县| 清河县| 黄山市| 乡城县| 卫辉市| 五寨县| 贞丰县| 右玉县| 西乌| 陵川县| 阳原县| 邯郸县| 南皮县| 高唐县| 翼城县| 留坝县| 宿迁市| 东源县| 松阳县| 寿阳县| 新和县| 西乌珠穆沁旗| 福建省| 北辰区| 石首市| 比如县| 七台河市| 辽阳县|