前言
我女朋友,是個會計, 她每天都要收拾兩樣東西,表格和我!
通常情況下,她收拾不了表格,心情就會變差,随後就會收拾我!
按邏輯,表格就是我被收拾的罪魁禍首,那如果我搞定了表格······豈不是·······嘻嘻嘻
一個機會的出現"這裡有幾個表格, 你給我把幾個表格裡面的内容放在一個文件裡面"
此時, 我已經意識到了, 她最近心情不好, 但是我又表現的比較好, 她沒什麼機會罵我
我知道, 這隻是一個接口, 我一定不能讓她得逞, 還好我有 "技術" O(∩_∩)O~
接下來, 我就開始了我的操作.
PS : 今天一定不能挨罵
準備工作文件夾a.xlsx : 有兩個表格頁
b.xlsx : 有一個表格頁
目标
把兩個 Excel 表格合并成一個
讀取兩個 Excel 表格的内容, 合并成一個, 寫入到一個新的 Excel 表格内
開始搞下載第三方練習讀取文件
$ npm install node-xlsx
index.js
// 導入第三方 const xlsx = require('node-xlsx') // 開始讀取 excel 文件 // 測試讀取 a.xlsx 文件 const workbook = xlsx.parse('./a.xlsx') console.log(workbook)
接下來去命令行運行一下這個文件試試看
$ node index.js
得到的結果是
[ { name: '第一頁', data: [ [Array], [Array] ] }, { name: '第二頁', data: [ [Array], [Array] ] } ]
- 我們發現, 把第一個 excel 表格的所有内容都讀取出來了
- 接下來詳細打印一下數組内的内容
console.log(workbook[0].data)
- 再來看一下結果
[ [ '姓名', '性别', '年齡' ], [ '前端小灰狼', '男', 18 ] ]
- 我們發現, 當前這個表中的所有内容都出現了
如果我們隻需要合并若幹表格的話, 其實是不需要做多餘的操作的, 這個數據就可以使用
讀取兩個文件并整合數組index.js
// 導入第三方 const xlsx = require('node-xlsx') // 讀取第一個文件 const workbook1 = xlsx.parse('./a.xlsx') const workbook2 = xlsx.parse('./b.xlsx') // 把兩個讀取到的文件整合 const workbookResult = [ ...workbook1, ...workbook2 ] console.log(workbookResult)
運行一下看看結果
[ { name: '第一頁', data: [ [Array], [Array] ] }, { name: '第二頁', data: [ [Array], [Array] ] }, { name: '财務自由', data: [ [Array], [Array], [Array], [Array], [Array], [Array], [Array] ] } ]
嘗試創建一個 Excel 表格
- 全部讀取出來了
- 如果我猜的沒錯, 那麼這個數據是不需要調整的, 隻要按照這個格式再次寫入到一個 .xlsx 的文件中就可以了
index.js
// 導入第三方 const xlsx = require('node-xlsx') const fs = require('fs') // 準備要寫入的數據 // 這裡的一個 data 就是一個 Excel 文件 const data = [ // 每一個對象就是一個表格頁 { // name 屬性就是表格頁的名稱 name: '測試', // data 就是表格頁内的數據 data: [ // 每一個小數組就是一行數據 [ '姓名', '性别', '年齡' ], // 以這一行為表頭 [ '前端小灰狼', '男', 18 ], [ '千鋒教育', '保密', 11 ] ] } ] // 利用 xlsx 生成表格流文件 const workboot = xlsx.build(data) // 把生成好的内容寫入一個文件 fs.writeFileSync('./test.xlsx', workboot)
- 運行以後, 我們發現, 當前目錄下多了一個 test.xlsx 的文件
正式開始合并工作
- 通過寫入方式, 我們會發現, 讀取出來的内容是可以直接使用的
OS : 我的工作馬上就要完成了, 看你怎麼罵我. 哼, 女人 !!
但是我這次完成以後, 如果讓她嘗到甜頭, 以後肯定還會讓我搞, 不如設計好, 以後就方便多了
準備一個目錄結構
開始代碼
- src data // 存放所有等待合并的 Excel 表格 index.js // 邏輯文件
- index.js
// 導入第三方 const xlsx = require('node-xlsx') const fs = require('fs') // 裝備一個數組用來整合所有内容 let list = [] // 利用 fs 讀取 data 文件夾路徑 const pathInfo = fs.readdirSync('./data/') // 循環遍曆來生成 pathInfo.forEach(item => { // 排除掉不是 .xlsx 結尾的文件 if (!/\.xlsx$/.test(item)) return const res = xlsx.parse(`./data/${ item }`) list = [ ...list, ...res ] }) // 生成要寫入的 表格流 文件 const workboot = xlsx.build(list) // 開始寫入 fs.writeFileSync('./result.xlsx', workboot)
完成, 以後在讓我合并表格這個事情就簡單多了
OS : 那她會不會還讓我做很多别的事情, 比如調整表格内容(合并單元格, 設置單元格大小, ...)
管她呢, 下次她有要求再說吧, 不能一次全都滿足她, 給自己留一點餘地
工作結束
,
- 小灰狼: "老婆, 老婆, 我弄完了, 我厲害不厲害"
- "為什麼這麼快"
- 小灰狼: "拿了橘子跑了"
- "什麼?"
- 小灰狼: "knowledge is power,知識就是力量"
- "你丫的有這好東西, 不早說,還跟我這兒拽洋文..."(媳婦兒,别打臉······)
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!