92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

前端實現生成帶有樣式的excel表格 Node和瀏覽器讀寫Excel文件探究實踐

2020-5-1    seo達人

最近碰到個需要自動生成表格的任務,作為前端的我,就想在 node 和瀏覽器中生成強大的表格,所以特此研究了很多關于表格的 npm 庫

支持讀寫 Excel 的 node.js 模塊

node-xlsx: 基于 Node.js 解析 excel 文件數據及生成 excel 文件,僅支持 xlsx 格式文件

js-xlsx: 目前 Github 上 star 數量最多的處理 Excel 的庫,支持解析多種格式表格 XLSX / XLSM / XLSB / XLS / CSV,解析采用純 js 實現,寫入需要依賴 nodejs 或者 FileSaver.js 實現生成寫入 Excel,可以生成子表 Excel,功能強大,但上手難度稍大。不提供基礎設置 Excel 表格 api 例單元格寬度,文檔有些亂,不適合快速上手;普通版本不支持定義字體、顏色、背景色等,有這個功能需要的可以使用 pro 版,是要聯系客服收費的,害我照著 API 設置調試了好多次都失敗。好在樣式設置問題有一些教程,通過研究本人已解決,可設置寬度顏色等等,見根目錄本人修改的 xlsx.js

xlsx-style 基于 xlsx 封裝的樣式庫,可以在 xlsx 的基礎上設置樣式。樣式不全,寬度都設置不了,好多年前作者就不維護了.寬度設置問題本人已解決了,見修改的 xlsx-style.js 文件

exceljs 在使用此庫之前,本人已花費了很大的精力,用以上庫做好了表格,但是發現不能設置頁眉頁腳,添加圖片,打印選項設置等等,直到發現了這個庫,文檔齊全,功能強大,并且還免費.但是star較少,差一點就錯過了。本教程主要針對這個庫

代碼庫地址

https://github.com/lingxiaoyi/excel

安裝

npm install


npm install -g nodemon


調試使用,替代 node 命令,實現保存文件,node 自動重新啟動執行,必須全局安裝才能運行


使用

nodemon app.js


js-xlsx 具體 api 使用方法請參考 main.js demo 使用,app.js 中修改為 require('./src/main.js');

exceljs 具體 api 使用方法請參考 main-exceljs.js demo 使用,app.js 中修改為 require('./src/main-exceljs.js');

因為每次生成完表格,每次都需要打開表格查看樣式,在 windows 電腦中,打開表格之后就鎖定不能生成新文件了,本來想著能導出一個 html 文件對應表格的樣式


node 調試

vscode 中打開調試右側設置編輯,將下方代碼復制進去,點 nodemon 啟動就可以進行 debug 調試了


{

     "type": "node",

     "request": "launch",

     "name": "nodemon",

     "runtimeExecutable": "nodemon",

     "program": "${workspaceFolder}/app.js",

     "restart": true,

     "console": "integratedTerminal",

     "internalConsoleOptions": "neverOpen",

     "skipFiles": ["<node_internals>/**"]

   },

webpack 目錄的作用

每次生成完新表格,都需要重新打開表格查看樣式,在 windows 電腦中,打開表格之后就鎖定了,再次生成新表格就會報錯,文件已鎖定,不能寫入,對于想偷懶的我,能不能實現像 webpack 熱更新功能那種,修改樣式 js 頁面自動更新呢?


wps 自帶另存 html 文件功能,但是沒有提供生成的 api ,網上也搜索不到對應的轉換功能,

本來以為自己要實現一套表格轉 html 的功能。通過不斷嘗試,偶然間發現手機瀏覽器可以直接打開預覽 xlsx 文件,內心狂喜啊


使用方法

進入 webpack 目錄安裝依賴包,安裝好之后執行


npm run dev


啟動成功之后,會自動打開帶有 ip 地址的預覽地址,此時在電腦瀏覽器會自動下載 xlsx 文件,忽略不管,用手機直接打開此地址,就能看到 xlsx 表格的內容了,并且每次新修改內容和樣式,都會自動刷新頁面顯示新表格.


小技巧

谷歌瀏覽器插件:


生成二維碼的插件生成二維碼方便手機掃描

劃詞翻譯 用來翻譯一些看不懂的英文文檔

browser 目錄

瀏覽器中實現生成 xlsx 表格方法


進入 browser 目錄安裝依賴包,安裝好之后執行


npm run dev


啟動成功之后,拖動根目錄 src 下的李四表格到頁面上的輸入框里,成功生成表格之后會生成一個下載鏈接地址,右鍵在新標簽頁打開鏈接,即會生成一個新的表格文件出來,完整 api 使用和 demo 文件請參考 index.js


vue 和 react 用法可以參考此例子,如果有必要也可以此版本庫的例子


一些概念

在使用這個庫之前,先介紹庫中的一些概念。


workbook 對象,指的是整份 Excel 文檔。我們在使用 js-xlsx 讀取 Excel 文檔之后就會獲得 workbook 對象。

worksheet 對象,指的是 Excel 文檔中的表。我們知道一份 Excel 文檔中可以包含很多張表,而每張表對應的就是 worksheet 對象。

cell 對象,指的就是 worksheet 中的單元格,一個單元格就是一個 cell 對象。

xlsx 使用注意事項

constXLSX = require('xlsx');

let html = XLSX.utils.sheet_to_html(workbook.Sheets.Sheet1)

生成 html 的用法,并且不會有任何樣式


exceljs 使用注意

讀取文件問題

因為 exceljs 讀取文件不支持 sync 同步讀取,給的實例也是 await 例子.導致我讀取完遇到一個問題,就是老是生成不成功,最后發現必須要把所有邏輯全部放入函數中,像下方這樣


(async function (params) {

 let res = await workbook.xlsx.readFile(`${__dirname}/趙六.xlsx`);

 //執行所有數據處理邏輯

 //執行寫的邏輯

 workbook.xlsx.writeFile(path.resolve(__dirname, '../webpack/test222.xlsx'));

});

所有邏輯全部要寫入這個函數中,這樣本來是可以的,但是出錯調試幾率較大,并且讀取到的數據龐大還需要額外處理,所以我讀取數據邏輯就用的 node-xlsx,十分簡單方便,如果你用的 exceljs 讀取文件數據出現問題,大概率是異步同步邏輯搞錯了,多加注意即可

寬度設置

列寬不知道是以什么為單位,反正不是像素(已測量),例子中是以厘米為單位再乘以 4.7 的結果設置的,4.7 是不斷測試的結果.

快捷查看列寬的方法,打開 wps 表格,長按列與列字母間的豎線,就能看到列寬,取厘米的單位即可.見下圖




前景色

前景色設置必須右鍵單元格選擇設置單元格格式,然后選擇圖案樣式選擇顏色,就可以前景色填充

worksheet.getCell('A2').fill = { type: 'pattern', pattern:'darkTrellis', fgColor:{argb:'FFFFFF00'}, bgColor:{argb:'FF0000FF'} };


背景色

worksheet.getCell('A2').fill = { type: "pattern", pattern: "solid", fgColor: { argb: next.bgColor }, }


排版不一致的問題

解決 Mac 下編輯 Microsoft Office Word 文檔與 Windows 排版不一致的問題,,不同的系統用 wps 打開相同的表格,打印預覽的時候,表格寬度顯示不一樣

問題詳細說明地址


我的解決辦法就是 mac 下顯示正常,按 mac 下的寬度來設置就可以了


參考資料

exceljs

node-xlsx

js-xlsx

日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
日韩中文有码在线视频| 亚洲欧美国内爽妇网| 亚洲激情视频在线观看| 日韩美女在线播放| 91免费综合在线| 2019日本中文字幕| 国产精品日韩久久久久| 国产精品狠色婷| 欧美日韩国产麻豆| 成人国产精品免费视频| 欧美日韩国产91| 亚洲另类欧美自拍| 亚洲一级免费视频| 日韩欧美中文第一页| 久久久久久久国产精品视频| 中文字幕亚洲第一| 2019精品视频| 伊人久久男人天堂| 欧美国产日韩一区二区在线观看| 国产又爽又黄的激情精品视频| 欧美激情一区二区三区高清视频| 亚洲乱码国产乱码精品精| 国产精品99久久久久久久久久久久| 另类天堂视频在线观看| 91精品国产91久久久| 国产亚洲欧美aaaa| 色一情一乱一区二区| 日韩av网址在线观看| 国产精国产精品| 亚洲亚裔videos黑人hd| 国产剧情久久久久久| 精品久久久国产| 国产一区二区丝袜高跟鞋图片| 亚洲国产日韩一区| 国产一区红桃视频| 色哟哟亚洲精品一区二区| 欧美激情乱人伦一区| 亚洲国产日韩欧美在线99| 久久香蕉国产线看观看网| 成人福利在线视频| 久久免费视频这里只有精品| 久久综合国产精品台湾中文娱乐网| 国产成人精品午夜| 亚洲999一在线观看www| 成人欧美在线视频| 91精品中国老女人| 日韩中文字幕免费视频| 欧美与黑人午夜性猛交久久久| 日韩欧美亚洲成人| 狠狠综合久久av一区二区小说| 国产精品久久久久免费a∨大胸| 激情成人中文字幕| 久久久视频免费观看| 欧美乱妇高清无乱码| 亚洲欧洲在线播放| 亚洲第五色综合网| 米奇精品一区二区三区在线观看| 国产精品久久久久久久久久久久久| 一本大道久久加勒比香蕉| 在线播放亚洲激情| 亚洲精品国产成人| 日韩在线视频观看| 久久91亚洲精品中文字幕| 国产精品精品久久久久久| 日韩av一区二区在线观看| 欧美疯狂做受xxxx高潮| 亚洲高清福利视频| 欧美精品在线第一页| 欧美夫妻性视频| 精品欧美aⅴ在线网站| 日av在线播放中文不卡| 久久中文字幕在线| 亚洲午夜未删减在线观看| 国产成人午夜视频网址| 欧美在线观看网址综合| 欧美亚洲伦理www| 亚洲欧美日本另类| 自拍偷拍亚洲区| 欧美劲爆第一页| 一区二区三区视频免费| 国产精品爱久久久久久久| 欧美大胆a视频| 91在线免费看网站| 国产成+人+综合+亚洲欧洲| 精品久久久在线观看| 国产成人在线一区二区| 国产欧美日韩精品专区| 欧美激情影音先锋| 亚洲午夜激情免费视频| 欧美成aaa人片免费看| 久久99精品视频一区97| 亚洲japanese制服美女| 国产91精品黑色丝袜高跟鞋| 国产精品久久久久高潮| 青青久久aⅴ北条麻妃| 俺也去精品视频在线观看| 欧美国产日韩中文字幕在线| 亚洲人成伊人成综合网久久久| 91精品视频免费观看| 亚洲跨种族黑人xxx| 亚洲欧洲午夜一线一品| 亚洲无限乱码一二三四麻| 亚洲图中文字幕| 亚洲香蕉成视频在线观看| 国产精品第一页在线| 成人中心免费视频| 国产欧美在线观看| 中文字幕在线国产精品| 欧美中文字幕在线| 欧美大尺度电影在线观看| 91在线网站视频| 国产精品视频网址| 精品少妇v888av| 久久久久久成人精品| 在线观看国产欧美| 国产香蕉97碰碰久久人人| 国产成人高清激情视频在线观看| 黄色91在线观看| 久久精品免费播放| 国产精品扒开腿做爽爽爽男男| 亚洲欧洲av一区二区| 色偷偷av亚洲男人的天堂| 欧美人成在线视频| 爽爽爽爽爽爽爽成人免费观看| 成人亚洲激情网| 亚洲人成免费电影| 日韩精品福利网站| 亚洲一区二区三区视频| 久久精品中文字幕| 久久久久久国产免费| 亚洲电影免费观看高清完整版| 在线电影中文日韩| 欧美国产在线电影| 国产综合在线视频| 国产精品视频一区二区三区四| 欧美黄色www| 91精品国产免费久久久久久| 国产精品一香蕉国产线看观看| 国产女精品视频网站免费| 91久久久精品| 一级做a爰片久久毛片美女图片| 欧亚精品在线观看| 国产精品三级美女白浆呻吟| 在线播放国产一区中文字幕剧情欧美| 亚洲最大激情中文字幕| 国产裸体写真av一区二区| 亚洲精品大尺度| 亚洲伊人久久大香线蕉av| 日产精品久久久一区二区福利| 亚洲男人第一网站| 欧美国产一区二区三区| 亚洲经典中文字幕| 国产亚洲欧美一区| 国产精品无av码在线观看| 亚洲精品98久久久久久中文字幕| 91在线看www| 69av在线播放| 欧美日韩国内自拍| 成人综合国产精品| 亚洲老头同性xxxxx| 97视频免费在线观看| 欧美性猛交xxxx乱大交| 97在线免费观看视频| 精品国产一区二区三区四区在线观看|