vue、react等快速操作excel

寫在前面

最近因?yàn)闃I(yè)務(wù)需要像棘,需要在瀏覽器通過excel批量導(dǎo)入數(shù)據(jù)和快讀導(dǎo)出數(shù)據(jù)稽亏,因此簡單封裝了下xlsx庫,以便快速完成導(dǎo)入導(dǎo)出操作缕题。

如何使用


# Basic Node.JS installation
npm install extend-excel --save

源碼

extend-excel

場景1 Excel數(shù)據(jù)轉(zhuǎn)化為JSON數(shù)據(jù):

1)如果您需要將Excel文件中的所有數(shù)據(jù)轉(zhuǎn)換為JSON截歉,import_excel函數(shù)將為您提供幫助。

測試原始文件內(nèi)容:

image.png
const { importExcel } = extendExcel

<!-- read file -->
const fileBuffer = fs.readFileSync(path.resolve(__dirname, './__mocks__/test.xlsx'))
const blob = new Blob([fileBuffer], { type : 'application/xlsx'});
const excelFile = new File([blob], 'test');

<!-- excel to json -->
const result = await importExcel(excelFile);
console.log(result)

2)如果您想將Excel文件的第一個(gè)工作表中的數(shù)據(jù)轉(zhuǎn)換為JSON烟零,您可以利用可選參數(shù)來實(shí)現(xiàn)這一點(diǎn)瘪松。

const { onlyFirst, XLSXReadOptions } = options

const result = await importExcel(excelFile, { onlyFirst: true })

3)如果您想將Excel文件的第一個(gè)工作表中的數(shù)據(jù)轉(zhuǎn)換為JSON,并映射Excel頭部名稱瓶摆,您可以利用可選參數(shù)來實(shí)現(xiàn)這一點(diǎn)凉逛。

const { onlyFirst, keyMapping, XLSXReadOptions } = options

const result = await importExcel(excelFile, {
  keyMapping: {
    測試1: 'test1',
    測試2: 'test2',
    測試3: 'test3',
    測試sheet1: 'testsheet1',
    測試sheet2: 'testsheet2',
    測試sheet3: 'testsheet3'
  }
})

結(jié)果:

{
  name: 'test',
  data: [
    { 'test1': 1, 'test2': 2, 'test3': 3 },
    { 'testsheet1': 1, 'testsheet2': 2, 'testsheet3': 3 }
  ]
}

4)如果您需要更多選項(xiàng),您可以傳遞XLSXReadOptions參數(shù)群井,該參數(shù)與xlsx選項(xiàng)兼容状飞。

場景2 JSON數(shù)據(jù)導(dǎo)出為xlsx:

1)如果您想要下載從JSON數(shù)據(jù)生成的Excel文件,export_excel函數(shù)可以幫助您。

const { exportExcel } = extend-excel

<!-- json to excel -->
const headers = {
    'test': '測試1',
    'test2': '測試2',
    'test3': '測試3',
    'testsheet1': '測試sheet1',
    'testsheet2': '測試sheet2',
    'testsheet3': '測試sheet3',
  }

const sourceData = [
    { 'test': 1, 'test2': 2, 'test3': 3 },
    { 'testsheet1': 1, 'testsheet2': 2, 'testsheet3': 3 }
  ]

const options = {}

const result = await exportExcel(headers, sourceData, options)

2)如果您想要自定義文件名并下載從JSON數(shù)據(jù)生成的Excel文件书斜,export_excel函數(shù)可以幫助您诬辈。

const { exportExcel } = extend-excel

<!-- json to excel -->
const headers = {
    'test': '測試1',
    'test2': '測試2',
    'test3': '測試3',
    'testsheet1': '測試sheet1',
    'testsheet2': '測試sheet2',
    'testsheet3': '測試sheet3',
  }

const sourceData = [
    { 'test': 1, 'test2': 2, 'test3': 3 },
    { 'testsheet1': 1, 'testsheet2': 2, 'testsheet3': 3 }
  ]

const options = { filename: 'test-export' }

const result = await exportExcel(headers, sourceData, options)

3)如果您想要自定義下載文件的屬性,您可以通過傳遞options參數(shù)來實(shí)現(xiàn)荐吉。

const { fileName, sheetName, XLSXOption } = options
Attribute name info
fileName 自定義下載文件的名稱焙糟。
sheetName 自定義下載文件的工作表名稱。
XLSXOption 調(diào)整xlsx庫的選項(xiàng)样屠。

Typescript Support

export interface DynamicObject {
  [key: string]: any
}

export interface ExportExcelOptions {
  fileName: string,
  sheetName: string,
  XLSXOption: WritingOptions
}

export interface ImportExcelOptions {
  onlyFirst: Boolean, // only first sheet
  XLSXReadOptions: ParsingOptions
}
ps:

以上內(nèi)容僅為自己的學(xué)習(xí)過程穿撮,歡迎大家取其精華,丟其糟粕痪欲。若對以上內(nèi)容有不同簡介或看法悦穿,歡迎一起探討,歡迎提Issues业踢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栗柒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子知举,更是在濱河造成了極大的恐慌瞬沦,老刑警劉巖太伊,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逛钻,居然都是意外死亡僚焦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門绣的,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叠赐,“玉大人,你說我怎么就攤上這事屡江“鸥牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵惩嘉,是天一觀的道長罢洲。 經(jīng)常有香客問我,道長文黎,這世上最難降的妖魔是什么惹苗? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮耸峭,結(jié)果婚禮上桩蓉,老公的妹妹穿的比我還像新娘。我一直安慰自己劳闹,他們只是感情好院究,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著本涕,像睡著了一般业汰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菩颖,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天样漆,我揣著相機(jī)與錄音,去河邊找鬼晦闰。 笑死放祟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呻右。 我是一名探鬼主播舞竿,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窿冯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起确徙,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤醒串,失蹤者是張志新(化名)和其女友劉穎执桌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芜赌,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仰挣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缠沈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膘壶。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洲愤,靈堂內(nèi)的尸體忽然破棺而出颓芭,到底是詐尸還是另有隱情,我是刑警寧澤柬赐,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布亡问,位于F島的核電站,受9級特大地震影響肛宋,放射性物質(zhì)發(fā)生泄漏州藕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一酝陈、第九天 我趴在偏房一處隱蔽的房頂上張望床玻。 院中可真熱鬧,春花似錦沉帮、人聲如沸锈死。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馅精。三九已至,卻和暖如春粱檀,著一層夾襖步出監(jiān)牢的瞬間洲敢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工茄蚯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留压彭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓渗常,卻偏偏與公主長得像壮不,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子皱碘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容