前言

最近項(xiàng)目中,需要使用到 Excel 導(dǎo)出,找了一圈發(fā)現(xiàn)沒(méi)有適用于 .NET Core的,不依賴(lài)Office和操作系統(tǒng)限制的 Office 組件,于是萌生了把 NPOI 適配并移植到 .NET Core 的想法。

NPOI 的介紹不多說(shuō)了,不了解的可以看一下 NPOI百度百科 的介紹,在此感謝瞿總和他的團(tuán)隊(duì)的貢獻(xiàn)。

NPOI 的移植之路并非想象的那么容易,因?yàn)槠湟蕾?lài)了 System.Drawing 和 System.Window.Forms 兩個(gè)組件,還有一個(gè)第三方的 SharpZipLib 庫(kù),在 GitHub 克隆了最新的代碼并且轉(zhuǎn)換為 NetStandrad 1.6 編譯之后,出現(xiàn)了數(shù)不清的錯(cuò)誤,應(yīng)該有上千個(gè)吧,在經(jīng)過(guò)一天的努力之后(包括刪除,修改,重寫(xiě)),錯(cuò)誤數(shù)量已經(jīng)減少到了100多個(gè),50多個(gè),20多個(gè),編譯通過(guò)。

在移植的過(guò)程中可以真切感受到當(dāng)初NPOI的作者在寫(xiě)這些代碼時(shí)候的辛苦努力,因?yàn)镹POI最初是基于 .Net Framework 1.1 框架寫(xiě)的,那個(gè)時(shí)候沒(méi)有泛型,沒(méi)有var,沒(méi)有很多的現(xiàn)成的類(lèi)庫(kù),全都是靠最基礎(chǔ)的一些數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn),雖然里面的很多種寫(xiě)法在目前看來(lái)可以很大程序的精簡(jiǎn),但是在當(dāng)時(shí)的條件下 真的是不容易。

在通過(guò)編譯之后,心里想著應(yīng)該問(wèn)題不大了,于是測(cè)試了一下,不幸的是,各種問(wèn)題,又經(jīng)過(guò)半天的調(diào)整之后,打算放棄了。 于是又去 github 上面搜索看看有沒(méi)有其他什么解決方案之類(lèi)的,無(wú)意間搜索到了一個(gè) NPOI.Core 的一個(gè)項(xiàng)目,是一個(gè)老外移植的 NPOI 到Core平臺(tái),原來(lái)已經(jīng)有人做了Core的移植了,克隆下來(lái)之后發(fā)現(xiàn)編譯不過(guò),又進(jìn)去看了一下代碼,這個(gè)庫(kù)目前依賴(lài)于Windows平臺(tái),而我們項(xiàng)目是運(yùn)行在CentOS的,其并不能在Linux上運(yùn)行,看來(lái)還是空歡喜一場(chǎng)。

網(wǎng)友評(píng)論