C#無(wú)需安裝Office使用NPOI處理xls到xlsx的轉(zhuǎn)換
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
當(dāng)前的工作里,需要實(shí)現(xiàn)xls格式到xlsx格式的轉(zhuǎn)換,因?yàn)閭€(gè)人常規(guī)使用c#編碼,所以使用的庫(kù)就是NPOI了,本來(lái)只想當(dāng)個(gè)代碼搬運(yùn)工,就想著在網(wǎng)上找點(diǎn)代碼copy一下,但是找了半天確實(shí)沒(méi)有找到合適的,就自己來(lái)處理了! NPOI現(xiàn)在很多地方都用這樣的接口形式來(lái)進(jìn)行封裝了,所以在不需要轉(zhuǎn)換格式的情況下,直接使用這樣的類型即可,但是在格式轉(zhuǎn)換地方就會(huì)存在一些坑,這個(gè)坑就在于如果直接調(diào)用方法和傳參,會(huì)告知你類型不對(duì)!說(shuō)白了,就是有些地方不能用xls讀取的格式信息賦值給xlsx格式的處理方法。 主代碼
上面這段代碼有一些內(nèi)容需要說(shuō)明,為啥要專門描述是給HSSFSheet類型進(jìn)行擴(kuò)展?因?yàn)閤ls格式的sheet頁(yè)面對(duì)應(yīng)的NPOI類型就是HSSFSheet,如果你擴(kuò)展ISheet進(jìn)行處理,如果讀取的是xlsx格式文件內(nèi)容,將會(huì)報(bào)錯(cuò)!所以在這里會(huì)明確指定到底是xls格式還是xlsx格式! 處理批注信息代碼
因?yàn)榕⒅锌赡苌婕岸喾N字體樣式信息,故在傳入?yún)?shù)的時(shí)候,也將字體格式信息進(jìn)行傳入了! 轉(zhuǎn)換單元格信息
大家可以看到,上面的方法中傳入了style樣式信息,為啥要這樣做呢?NPOI中對(duì)單元格樣式的創(chuàng)建數(shù)量是有上限的,所以如果存在我們認(rèn)為相同格式的樣式時(shí),就從已有的樣式庫(kù)中去獲取就可以了,這樣可以減少創(chuàng)建樣式信息,以避免因樣式問(wèn)題報(bào)錯(cuò)!上限值我記得應(yīng)該是4000個(gè),這很容易超限啊,4000個(gè)樣式定義也就20列200行的數(shù)量級(jí)。 處理樣式定義
處理字體格式信息
之前在網(wǎng)上找的代碼,轉(zhuǎn)換格式花費(fèi)的時(shí)間實(shí)在是不能接受(超過(guò)一分鐘了),現(xiàn)在工作中要轉(zhuǎn)換的文件大概在50份上下,轉(zhuǎn)換時(shí)間不超過(guò)10s,還能接受。
該文章在 2025/4/30 13:08:49 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |