java poi EXCEL導(dǎo)出 “此文件中的某些文本格式可能已經(jīng)更改,因?yàn)樗呀?jīng)超出最多允許的字體數(shù)。關(guān)閉其他文檔再試一次可能有用”

java poi EXCEL導(dǎo)出

“此文件中的某些文本格式可能已經(jīng)更改,因?yàn)樗呀?jīng)超出最多允許的字體數(shù)。關(guān)閉其他文檔再試一次可能有用”


從數(shù)據(jù)庫中拿到數(shù)據(jù),作為excel導(dǎo)出。大多數(shù)情況下數(shù)據(jù)會是個(gè)List。

for循環(huán)遍歷拿到的數(shù)據(jù)List作為excel導(dǎo)出,為了使導(dǎo)出的excel不那么丑陋,經(jīng)常會在導(dǎo)出時(shí)為excel的數(shù)據(jù)列加些樣式。如,對齊方式,字體,邊框等等


設(shè)置每一列數(shù)據(jù)的樣式時(shí),

如果你的設(shè)置樣式是專門抽出一個(gè)方法來實(shí)現(xiàn)的,且將HSSFWorkbook作為變量傳入進(jìn)去,

直接在for循環(huán)內(nèi)部創(chuàng)建樣式的

就像以下寫法:



那么輸出來的excel文件將會提示

“此文件中的某些文本格式可能已經(jīng)更改,因?yàn)樗呀?jīng)超出最多允許的字體數(shù)。關(guān)閉其他文檔再試一次可能有用”

且輸出來的文件所占硬盤空間也將變得格外的大。

因?yàn)槟氵@樣做,是每一行的每一列去用HSSFWorkbook創(chuàng)建了一個(gè)createCellStyle

假若客戶要求導(dǎo)出的excel既有樣式又要有字體大小,且假定從庫中拿到的數(shù)據(jù)List為10000條,每條4個(gè)字段,那么create的次數(shù):(4*2)*10000。

真正的生產(chǎn)環(huán)境,導(dǎo)出的數(shù)據(jù)每條中的字段要比4個(gè)多的多,這將是非常嚴(yán)重的錯(cuò)誤!


解決方法

for循環(huán)外提前建好,for循環(huán)內(nèi)直接引用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容