? ? 最近開(kāi)發(fā)一個(gè)藍(lán)牙項(xiàng)目,需要導(dǎo)出和導(dǎo)入EXCEL數(shù)據(jù)肺素,由于之前沒(méi)有接觸這類(lèi)功能,查閱了相關(guān)資料宇驾,最終選擇采用libxlsxwriter庫(kù)實(shí)現(xiàn)EXCEL文檔生成倍靡、CoreXLSX實(shí)現(xiàn)EXCEL文檔內(nèi)容解析,做個(gè)簡(jiǎn)單匯總方便以后查閱课舍,費(fèi)話(huà)不多說(shuō)塌西,直接上干貨。
1筝尾、libxlsxwriter
Libxlsxwriter 是一個(gè) C 庫(kù)雨让,可用于在 Excel 2007+ XLSX 文件中寫(xiě)入文本、數(shù)字忿等、公式和指向多個(gè)工作表的超鏈接栖忠。
具體功能介紹請(qǐng)?zhí)D(zhuǎn)github的庫(kù)地址連接:
1、項(xiàng)目地址
https://github.com/jmcnamara/libxlsxwriter
2贸街、使用手冊(cè)地址
http://libxlsxwriter.github.io/
因?yàn)轫?xiàng)目是用swift開(kāi)發(fā)庵寞,所以這里主要簡(jiǎn)單介紹下swift項(xiàng)目下如何使用:
1.1、準(zhǔn)備好導(dǎo)入數(shù)據(jù)
數(shù)據(jù)格式建議采用Array的方式存儲(chǔ)每一組的數(shù)據(jù)薛匪,方便數(shù)據(jù)寫(xiě)入處理
1.2捐川、創(chuàng)建存儲(chǔ)文件夾路徑
1.3、創(chuàng)建存儲(chǔ)文件
文件名稱(chēng)根據(jù)實(shí)際需求定義逸尖,路徑只需要文件夾路徑拼接文件名即可
1.4古沥、創(chuàng)建EXCEL表格
創(chuàng)建表格過(guò)程如下:
1、生成一張表格
2娇跟、創(chuàng)建一個(gè)sheet
3岩齿、設(shè)置表格的樣式、格式(包含文字格式苞俘、文字顏色盹沈、對(duì)齊方式等)
樣式設(shè)置可參考使用手冊(cè)里的說(shuō)明,這里大概列幾個(gè)供參考:
4吃谣、關(guān)閉表格創(chuàng)建
1.5乞封、查看EXCEL表格是否創(chuàng)建成功
1.5.1做裙、可通過(guò)存儲(chǔ)路徑查看表格是否按我們?cè)O(shè)置樣式生成
如果格式不對(duì)或者樣式不喜歡,可以結(jié)合實(shí)際重新設(shè)置
1.5.2肃晚、通過(guò)QuickLook系統(tǒng)自帶框架打開(kāi)EXCEL文檔
QuickLook的框架詳解請(qǐng)查看:http://www.reibang.com/p/1e886bd9dd51
可以通過(guò)QuickLook打開(kāi)EXCEL文檔锚贱,同時(shí)QuickLook還集成一系列功能(保存文件、傳送文件等)关串,導(dǎo)出文檔功能可用這個(gè)框架實(shí)現(xiàn)拧廊,具體如何導(dǎo)出請(qǐng)看框架詳解說(shuō)明即可
1.6、優(yōu)點(diǎn)
可以通過(guò)設(shè)置樣式創(chuàng)建各種復(fù)雜的EXCEL表格悍缠,文檔說(shuō)明也非常詳細(xì)卦绣,用戶(hù)很容易就可以利用該框架創(chuàng)建滿(mǎn)足各種需求的EXCEL表格
1.7、缺點(diǎn)
沒(méi)有EXCEL讀取功能飞蚓,因此讀取功能只能另外處理
至此滤港,一個(gè)簡(jiǎn)單的EXCEL創(chuàng)建過(guò)程已經(jīng)完成。libxlsxwriter功能十分強(qiáng)大趴拧,如果要生成一個(gè)復(fù)雜的表格溅漾,請(qǐng)仔細(xì)研讀格式設(shè)置說(shuō)明文檔
2、CoreXLSX
CoreXLSX是一個(gè)庫(kù)著榴,它專(zhuān)注于表示基于XML的XLSX電子表格格式的底層結(jié)構(gòu)添履。它允許您打開(kāi)擴(kuò)展名為.xlsx的電子表格存檔,并將其內(nèi)部結(jié)構(gòu)映射到直接用Swift表示的模型類(lèi)型中脑又。
需要注意的是暮胧,此庫(kù)僅為.xlsx格式提供只讀支持。由于舊的legacy.xls電子表格格式具有完全不同的內(nèi)部結(jié)構(gòu)问麸,如果您需要使用該類(lèi)型的文件往衷,請(qǐng)參考其他庫(kù)。
如果您的.xlsx文件使用ECMA-376敏捷加密(這似乎是最流行的一種)严卖,請(qǐng)查看CryptoOffice庫(kù)席舍。
項(xiàng)目地址:https://github.com/CoreOffice/CoreXLSX
2.1、打開(kāi)EXCEL文檔
可通過(guò)系統(tǒng)提供的API打開(kāi)哮笆,如下:
可通過(guò)UIDocumentPickerDelegate回調(diào)方法拿到對(duì)應(yīng)的文件路徑来颤,這里需要注意一個(gè)細(xì)節(jié),如下圖
讀取文件時(shí)需要授權(quán)稠肘,不然有的文件無(wú)法讀取福铅,會(huì)報(bào)沒(méi)有權(quán)限的錯(cuò)誤提示,讀取數(shù)據(jù)完成后启具,需要關(guān)閉授權(quán)
2.2本讥、讀取文檔內(nèi)容
采用CoreXLSX相關(guān)API去讀取數(shù)據(jù),具體可參考項(xiàng)目文檔說(shuō)明鲁冯,因?yàn)轫?xiàng)目在讀取數(shù)據(jù)時(shí)需要校驗(yàn)文檔內(nèi)容是否合法拷沸,不合法需要提示用戶(hù)重新選擇其他文件,校驗(yàn)規(guī)則可根據(jù)實(shí)際需求去做薯演,以下列舉個(gè)人項(xiàng)目的簡(jiǎn)單校驗(yàn)撞芍,如下圖
最終rows得到的就是每組的數(shù)據(jù),可通過(guò)遍歷獲取對(duì)應(yīng)的數(shù)據(jù)跨扮,如有疑問(wèn)序无,請(qǐng)參考官方文檔或者官方DEMO
參考文獻(xiàn):
libxlsxwriter開(kāi)源庫(kù):https://github.com/jmcnamara/libxlsxwriter
CoreXLSX開(kāi)源庫(kù):https://github.com/CoreOffice/CoreXLSX
XlsxReaderWriterSwift開(kāi)源庫(kù):https://github.com/mehulparmar4ever/XlsxReaderWriterSwift
謝謝各位的無(wú)私奉獻(xiàn)酥馍。亿虽。。