前端實(shí)現(xiàn)導(dǎo)出excel單元格合并和調(diào)整樣式

有些業(yè)務(wù)場(chǎng)景需要導(dǎo)出excel表格瞪浸,尋常這類需求其實(shí)是服務(wù)端完成,但是前端也有可以實(shí)現(xiàn)這類需求的庫(kù),這里我介紹最近使用過(guò)的三個(gè)庫(kù)。

通用電子表格格式(CSF)

單元地址對(duì)象存儲(chǔ)為{c:C, r:R},C和R是列號(hào)和行號(hào)钓觉。例如茴肥,單元格地址B5由單元地址對(duì)象表示{c:1, r:4}。

單元格范圍對(duì)象存儲(chǔ)為范圍{s:S, e:E}荡灾,其中S表示第一個(gè)單元格瓤狐,E表示最后一個(gè)單元格。例如批幌,范圍A3:B7由單元格范圍對(duì)象表示{s:{c:0, r:2}, e:{c:1, r:6}}

單元對(duì)象的基本鍵值對(duì)

特殊工作表鍵(可通過(guò)sheet[key]進(jìn)行訪問础锐,每個(gè)以!開頭):

  • sheet['!ref']:代表圖紙范圍。與圖紙一起使用的功能應(yīng)使用此參數(shù)來(lái)確定范圍荧缘。分配超出范圍的單元格將不被處理皆警。當(dāng)遇到顯示不出來(lái)內(nèi)容時(shí),請(qǐng)檢查范圍是否正確
  • sheet['!margins']:代表頁(yè)邊距的對(duì)象截粗。默認(rèn)值遵循Excel的“常規(guī)”預(yù)設(shè)信姓。Excel還具有“寬”和“窄”預(yù)設(shè),但它們存儲(chǔ)為原始測(cè)量值绸罗。
  • sheet['!cols']:列屬性對(duì)象的數(shù)組意推。列寬實(shí)際上是以規(guī)范化的方式存儲(chǔ)在文件中的,以“最大位數(shù)寬度”(呈示的數(shù)字0-9的最大寬度珊蟀,以像素為單位)衡量菊值。解析后,列對(duì)象將在wpx字段中存儲(chǔ)像素寬度育灸,在字段中存儲(chǔ)字符寬度以及在wch字段中存儲(chǔ)最大位數(shù)MDW腻窒。
  • sheet['!rows']:行屬性對(duì)象的數(shù)組,如文檔稍后所述磅崭。每個(gè)行對(duì)象對(duì)包括行高和可見性的屬性進(jìn)行編碼定页。
  • sheet['!merges']:與工作表中相對(duì)應(yīng)的范圍對(duì)象數(shù)組合并單元格。純文本格式不支持合并單元格绽诚。

SheetJS

sheetJS官網(wǎng)
sheetJS--github
優(yōu)點(diǎn):有很多實(shí)用方便的方法和格式轉(zhuǎn)換
缺點(diǎn):調(diào)整樣式只有付費(fèi)版可以修改

工具方法:
aoa_to_sheet 將JS數(shù)據(jù)數(shù)組轉(zhuǎn)換為工作表典徊。
json_to_sheet 將JS對(duì)象數(shù)組轉(zhuǎn)換為工作表。
table_to_sheet 將DOM TABLE元素轉(zhuǎn)換為工作表恩够。
sheet_add_aoa 將JS數(shù)據(jù)數(shù)組添加到現(xiàn)有工作表中卒落。
sheet_add_json 將JS對(duì)象數(shù)組添加到現(xiàn)有工作表中。

sheet_to_json 將工作表對(duì)象轉(zhuǎn)換為JSON對(duì)象數(shù)組蜂桶。
sheet_to_csv 生成定界符分隔值輸出儡毕。
sheet_to_txt 生成UTF16格式的文本。
sheet_to_html 生成HTML輸出。
sheet_to_formulae 生成公式列表(具有值后備)腰湾。

具體合并單元格的例子請(qǐng)參考 純前端利用 js-xlsx 之合并單元格(3)

xlsx-style

xlsx-style地址
此項(xiàng)目是原始SheetJS / xlsx項(xiàng)目的分支雷恃。
但是并沒有隨著SheetJS更新而更新,所以有很多現(xiàn)有的SheetJS的實(shí)用工具方法這個(gè)插件里都沒有费坊。但是優(yōu)點(diǎn)是可以導(dǎo)出excel樣式并且不用付費(fèi)
工具減少成了這些:

sheet_to_json 將工作簿對(duì)象轉(zhuǎn)換為JSON對(duì)象數(shù)組倒槐。
sheet_to_csv 生成定界符分隔值輸出
sheet_to_formulae 生成公式列表(具有值后備)

這個(gè)插件也是可以合并單元格的,所以如果不是很復(fù)雜的數(shù)據(jù)轉(zhuǎn)換成excel附井,并且又需要樣式調(diào)整的讨越,可以選擇這個(gè)插件。
具體調(diào)整樣式例子請(qǐng)參考 純前端利用 js-xlsx 之單元格樣式(4)

LAY-EXCEL

這是一個(gè)改造最新 JS-XLSX 讓其支持樣式設(shè)置的插件永毅,可以說(shuō)是集合了JS-XLSX的所有優(yōu)點(diǎn)把跨,也克服了缺點(diǎn)(樣式調(diào)整需要付費(fèi))的插件,博主原文在這里:
令最新JS-XLSX支持樣式的改造方法
文檔:
LAY-EXCEL 簡(jiǎn)單快捷的導(dǎo)出插件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沼死,一起剝皮案震驚了整個(gè)濱河市着逐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌意蛀,老刑警劉巖滨嘱,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浸间,居然都是意外死亡太雨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門魁蒜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)囊扳,“玉大人,你說(shuō)我怎么就攤上這事兜看∽断蹋” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵细移,是天一觀的道長(zhǎng)搏予。 經(jīng)常有香客問我,道長(zhǎng)弧轧,這世上最難降的妖魔是什么雪侥? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮精绎,結(jié)果婚禮上速缨,老公的妹妹穿的比我還像新娘。我一直安慰自己代乃,他們只是感情好旬牲,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般原茅。 火紅的嫁衣襯著肌膚如雪吭历。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天擂橘,我揣著相機(jī)與錄音晌区,去河邊找鬼。 笑死贝室,一個(gè)胖子當(dāng)著我的面吹牛契讲,可吹牛的內(nèi)容都是我干的仿吞。 我是一名探鬼主播滑频,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼唤冈!你這毒婦竟也來(lái)了峡迷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤你虹,失蹤者是張志新(化名)和其女友劉穎绘搞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傅物,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夯辖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了董饰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒿褂。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卒暂,靈堂內(nèi)的尸體忽然破棺而出啄栓,到底是詐尸還是另有隱情,我是刑警寧澤也祠,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布昙楚,位于F島的核電站,受9級(jí)特大地震影響诈嘿,放射性物質(zhì)發(fā)生泄漏堪旧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一奖亚、第九天 我趴在偏房一處隱蔽的房頂上張望崎场。 院中可真熱鬧,春花似錦遂蛀、人聲如沸谭跨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)螃宙。三九已至蛮瞄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谆扎,已是汗流浹背挂捅。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堂湖,地道東北人闲先。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像无蜂,于是被迫代替她去往敵國(guó)和親伺糠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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