easypoi導出Excel遇到的坑


當對象屬性名稱第二個字母為大寫時會導致導出對應屬性數據為空情況。

舉例:public String aBTest;

easypoi通過PoiReflectorUtil.class工具類(具體調用的方法見下面的代碼)依據對象的方法名獲取其對應的屬性,結果為:ABTest,與實際屬性不一致(實際屬性應為:aBTest),所以會導致寫入Excel文件數據為空。

導致對應屬性導出為空的原因:

easypoi在處理屬性時判斷不夠全面,使用時需要注意

判斷邏輯:

(
name.length() == 1 || name.length() > 1 && !Character.isUpperCase(name.charAt(1))
)
出現問題的具體方法見下面代碼:
PoiReflectorUtil.class
private static String methodToProperty(String name) {
if (name.startsWith("is")) {
name = name.substring(2);
} else {
if (!name.startsWith("get") && !name.startsWith("set")) {
throw new RuntimeException("Error parsing property name '" + name + "'. Didn't start with 'is', 'get' or 'set'.");
}

name = name.substring(3);
}

if (name.length() == 1 || name.length() > 1 && !Character.isUpperCase(name.charAt(1))) {
name = name.substring(0, 1).toLowerCase(Locale.ENGLISH) + name.substring(1);
}

return name;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM