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)直接引用