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