#### 2.7 如何自定義數據處理
導入導出總有一些自定義格式轉換,AutoPoi雖然定義了很多服務,但是也無法滿足所有客戶的需求,這個時候就需要咱們自己定義數據處理 AutoPoi提供了
~~~
/**
* Excel 導入導出 數據處理接口
*
* @author JueYue
* 2014年6月19日 下午11:59:45
*/
public interface IExcelDataHandler<T> {
/**
* 導出處理方法
*
* @param obj
* 當前對象
* @param name
* 當前字段名稱
* @param value
* 當前值
* @return
*/
public Object exportHandler(T obj, String name, Object value);
/**
* 獲取需要處理的字段,導入和導出統一處理了, 減少書寫的字段
*
* @return
*/
public String[] getNeedHandlerFields();
/**
* 導入處理方法 當前對象,當前字段名稱,當前值
*
* @param obj
* 當前對象
* @param name
* 當前字段名稱
* @param value
* 當前值
* @return
*/
public Object importHandler(T obj, String name, Object value);
/**
* 設置需要處理的屬性列表
* @param fields
*/
public void setNeedHandlerFields(String[] fields);
/**
* 設置Map導入,自定義 put
* @param map
* @param originKey
* @param value
*/
public void setMapValue(Map<String, Object> map, String originKey, Object value);
/**
* 獲取這個字段的 Hyperlink ,07版本需要,03版本不需要
* @param creationHelper
* @param obj
* @param name
* @param value
* @return
*/
public Hyperlink getHyperlink(CreationHelper creationHelper, T obj, String name, Object value);
}
~~~
簡單的使用方法如下
~~~
CourseHandler hanlder = new CourseHandler();
hanlder.setNeedHandlerFields(new String[] { "課程名稱" });
exportParams.setDataHandler(hanlder);
~~~
我們自己實現以下這個類,也可以繼承ExcelDataHandlerDefaultImpl ,避免實現多余的接口 setNeedHandlerFields 這個是需要我們自己處理的字段,需要手動設置
讓我們看一個demo
~~~
public class MapImportHandler extends ExcelDataHandlerDefaultImpl<Map<String, Object>> {
@Override
public void setMapValue(Map<String, Object> map, String originKey, Object value) {
if (value instanceof Double) {
map.put(getRealKey(originKey), PoiPublicUtil.doubleToString((Double) value));
} else {
map.put(getRealKey(originKey), value != null ? value.toString() : null);
}
}
private String getRealKey(String originKey) {
if (originKey.equals("交易賬戶")) {
return "accountNo";
}
if (originKey.equals("姓名")) {
return "name";
}
if (originKey.equals("客戶類型")) {
return "type";
}
return originKey;
}
}
~~~
這里我們在map導入的時候把map的key給轉了,從中文轉為習慣的英文
- 1.前傳
- 1.1前言
- 1.2 Autopoi 介紹
- 1.3 使用
- 1.4 測試項目
- 1.5 快速文檔
- 1.6 示例
- 1.6.1 單表數據導出多表頭示例
- 單表數據多表頭導入注意bak
- 1.6.2 單表數據導出多sheet示例
- 1.6.3 excel根據模板導出
- 1.6.4 一對多導出needMerge示例
- 1.6.5 大數據導出示例
- 1.7 導出自定義選擇列導出
- 2. Excel 注解版
- 2.0 @excel注解的使用
- 2.1 Excel導入導出
- 2.2 注解
- 2.3 注解導出,導入
- 2.3.1 對象定義
- 2.3.2 集合定義
- 2.3.3 圖片的導出
- 2.3.4 Excel導入介紹
- 2.3.5 Excel導入小功能
- 2.3.6 圖片的導入
- 2.3.7 Excel多Sheet導出
- 2.4 注解變種-更自由的導出
- 2.5 Map導入,自由發揮
- 2.6 Excel的樣式自定義
- 2.7 如何自定義數據處理
- 2.8 Excel導入校驗(暫不支持)
- 2.9 Excel 大批量讀取
- 2.10 Excel大數據導出
- 2.11 groupname和ExcelEntity的name屬性
- 3. Excel 模板版
- 3.1 模板 指令介紹
- 3.2 基本導出
- 3.3 模板當中使用注解
- 3.4 圖片導出
- 3.5 橫向遍歷
- 4. Excel<->Html
- 4.1 Excel 的Html預覽
- 4.2 html轉Excel更神奇的導出
- 5. Word
- 5.1 word模板導出
- 6. PDF
- 7. Spring MVC
- 7.1 View 介紹
- 7.2 大數據導出View的用法
- 7.3 注解導出View用法
- 7.4 注解變種Map類型的導出View
- 7.5Excel模板導出View
- 7.6 PoiBaseView.render view的補救
- 8.問題歸檔
- 9.大數據量處理
- 10.autopoi升級4.0版本修改記錄